'atomic_read()' -> refcount_read()'
authorShaun Ruffell <sruffell@digium.com>
Thu, 1 Jun 2017 17:16:54 +0000 (12:16 -0500)
committerTzafrir Cohen <tzafrir.cohen@xorcom.com>
Mon, 26 Jun 2017 14:49:13 +0000 (17:49 +0300)
The upstream 4.11 kernel, in commit (10383aea2f445bce9b2a2b308def08134b438c8e
"kref: Implement 'struct kref' using refcount_t"), changed refcount type on kref
objects. We now need to use refcount_read to read them.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>

drivers/dahdi/dahdi_dynamic.c
drivers/dahdi/xpp/xbus-core.c
drivers/dahdi/xpp/xbus-sysfs.c
drivers/dahdi/xpp/xpp_dahdi.c
include/dahdi/kernel.h

index 5be3b97..0a37e2a 100644 (file)
@@ -467,7 +467,7 @@ static int _destroy_dynamic(struct dahdi_dynamic_span *dds)
 
        /* We shouldn't have more than the two references at this point.  If
         * we do, there are probably channels that are still opened. */
-       if (atomic_read(&d->kref.refcount) > 2) {
+       if (refcount_read(&d->kref.refcount) > 2) {
                dynamic_put(d);
                return -EBUSY;
        }
index f98a2b9..4281f1c 100644 (file)
@@ -244,7 +244,7 @@ int refcount_xbus(xbus_t *xbus)
 {
        struct kref *kref = &xbus->kref;
 
-       return atomic_read(&kref->refcount);
+       return refcount_read(&kref->refcount);
 }
 
 /*------------------------- Frame  Handling ------------------------*/
index 8e81670..2d8e676 100644 (file)
@@ -1000,7 +1000,7 @@ void xbus_sysfs_remove(xbus_t *xbus)
                return;
        }
        XBUS_DBG(DEVICES, xbus, "going to unregister: refcount=%d\n",
-               atomic_read(&astribank->kobj.kref.refcount));
+               refcount_read(&astribank->kobj.kref.refcount));
        BUG_ON(dev_get_drvdata(astribank) != xbus);
        device_unregister(astribank);
        dev_set_drvdata(astribank, NULL);
index c58d720..6c80df7 100644 (file)
@@ -124,7 +124,7 @@ int refcount_xpd(xpd_t *xpd)
 {
        struct kref *kref = &xpd->kref;
 
-       return atomic_read(&kref->refcount);
+       return refcount_read(&kref->refcount);
 }
 
 xpd_t *get_xpd(const char *msg, xpd_t *xpd)
index ce16668..c946fa3 100644 (file)
@@ -1404,6 +1404,8 @@ static inline short dahdi_txtone_nextsample(struct dahdi_chan *ss)
 /*! Maximum audio mask */
 #define DAHDI_FORMAT_AUDIO_MASK        ((1 << 16) - 1)
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0)
+#define refcount_read atomic_read
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)
 
 /* DAHDI only was using the xxx_clear_bit variants. */
@@ -1533,6 +1535,7 @@ static inline int strcasecmp(const char *s1, const char *s2)
 #endif /* 2.6.31 */
 #endif /* 3.10.0 */
 #endif /* 3.16.0 */
+#endif /* 4.11.0 */
 
 #ifndef DEFINE_SPINLOCK
 #define DEFINE_SPINLOCK(x)      spinlock_t x = SPIN_LOCK_UNLOCKED