locking/atomic, kref: Add kref_read()
authorPeter Zijlstra <peterz@infradead.org>
Mon, 14 Nov 2016 16:29:48 +0000 (17:29 +0100)
committerIngo Molnar <mingo@kernel.org>
Sat, 14 Jan 2017 10:37:18 +0000 (11:37 +0100)
Since we need to change the implementation, stop exposing internals.

Provide kref_read() to read the current reference count; typically
used for debug messages.

Kills two anti-patterns:

atomic_read(&kref->refcount)
kref->refcount.counter

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
56 files changed:
drivers/block/drbd/drbd_req.c
drivers/block/rbd.c
drivers/block/virtio_blk.c
drivers/gpu/drm/drm_gem_cma_helper.c
drivers/gpu/drm/drm_info.c
drivers/gpu/drm/drm_mode_object.c
drivers/gpu/drm/etnaviv/etnaviv_gem.c
drivers/gpu/drm/i915/i915_gem_object.h
drivers/gpu/drm/msm/msm_gem.c
drivers/gpu/drm/nouveau/nouveau_fence.c
drivers/gpu/drm/omapdrm/omap_gem.c
drivers/gpu/drm/ttm/ttm_bo.c
drivers/gpu/drm/ttm/ttm_object.c
drivers/infiniband/hw/cxgb3/iwch_cm.h
drivers/infiniband/hw/cxgb3/iwch_qp.c
drivers/infiniband/hw/cxgb4/iw_cxgb4.h
drivers/infiniband/hw/cxgb4/qp.c
drivers/infiniband/hw/usnic/usnic_ib_sysfs.c
drivers/infiniband/hw/usnic/usnic_ib_verbs.c
drivers/misc/genwqe/card_dev.c
drivers/misc/mei/debugfs.c
drivers/pci/hotplug/pnv_php.c
drivers/pci/slot.c
drivers/scsi/bnx2fc/bnx2fc_io.c
drivers/scsi/cxgbi/libcxgbi.h
drivers/scsi/lpfc/lpfc_debugfs.c
drivers/scsi/lpfc/lpfc_els.c
drivers/scsi/lpfc/lpfc_hbadisc.c
drivers/scsi/lpfc/lpfc_init.c
drivers/scsi/qla2xxx/tcm_qla2xxx.c
drivers/staging/android/ion/ion.c
drivers/staging/comedi/comedi_buf.c
drivers/target/target_core_pr.c
drivers/target/tcm_fc/tfc_sess.c
drivers/usb/gadget/function/f_fs.c
fs/exofs/sys.c
fs/ocfs2/cluster/netdebug.c
fs/ocfs2/cluster/tcp.c
fs/ocfs2/dlm/dlmdebug.c
fs/ocfs2/dlm/dlmdomain.c
fs/ocfs2/dlm/dlmmaster.c
fs/ocfs2/dlm/dlmunlock.c
include/drm/drm_framebuffer.h
include/drm/ttm/ttm_bo_driver.h
include/linux/kref.h
include/linux/sunrpc/cache.h
include/net/bluetooth/hci_core.h
net/bluetooth/6lowpan.c
net/bluetooth/a2mp.c
net/bluetooth/amp.c
net/bluetooth/l2cap_core.c
net/ceph/messenger.c
net/ceph/osd_client.c
net/sunrpc/cache.c
net/sunrpc/svc_xprt.c
net/sunrpc/xprtrdma/svc_rdma_transport.c

index de279fe4e4fdb43a0d9458227b862ecdacb0aaa8..74306c054983d5d94962280ddc5ae3a1fa8c175d 100644 (file)
@@ -520,7 +520,7 @@ static void mod_rq_state(struct drbd_request *req, struct bio_and_error *m,
                /* Completion does it's own kref_put.  If we are going to
                 * kref_sub below, we need req to be still around then. */
                int at_least = k_put + !!c_put;
-               int refcount = atomic_read(&req->kref.refcount);
+               int refcount = kref_read(&req->kref);
                if (refcount < at_least)
                        drbd_err(device,
                                "mod_rq_state: Logic BUG: %x -> %x: refcount = %d, should be >= %d\n",
index 36d2b9f4e83654637925d57fce5a4fc8cd0f009e..436baa66f701c8ee88519047016c7525c2d390e6 100644 (file)
@@ -1535,7 +1535,7 @@ static bool obj_request_overlaps_parent(struct rbd_obj_request *obj_request)
 static void rbd_obj_request_get(struct rbd_obj_request *obj_request)
 {
        dout("%s: obj %p (was %d)\n", __func__, obj_request,
-               atomic_read(&obj_request->kref.refcount));
+               kref_read(&obj_request->kref));
        kref_get(&obj_request->kref);
 }
 
@@ -1544,14 +1544,14 @@ static void rbd_obj_request_put(struct rbd_obj_request *obj_request)
 {
        rbd_assert(obj_request != NULL);
        dout("%s: obj %p (was %d)\n", __func__, obj_request,
-               atomic_read(&obj_request->kref.refcount));
+               kref_read(&obj_request->kref));
        kref_put(&obj_request->kref, rbd_obj_request_destroy);
 }
 
 static void rbd_img_request_get(struct rbd_img_request *img_request)
 {
        dout("%s: img %p (was %d)\n", __func__, img_request,
-            atomic_read(&img_request->kref.refcount));
+            kref_read(&img_request->kref));
        kref_get(&img_request->kref);
 }
 
@@ -1562,7 +1562,7 @@ static void rbd_img_request_put(struct rbd_img_request *img_request)
 {
        rbd_assert(img_request != NULL);
        dout("%s: img %p (was %d)\n", __func__, img_request,
-               atomic_read(&img_request->kref.refcount));
+               kref_read(&img_request->kref));
        if (img_request_child_test(img_request))
                kref_put(&img_request->kref, rbd_parent_request_destroy);
        else
index 5545a679abd8887123fc83d57beb37dede77a685..79a346c9744665737c5fec8fb34ee4a03b78df33 100644 (file)
@@ -767,7 +767,7 @@ static void virtblk_remove(struct virtio_device *vdev)
        /* Stop all the virtqueues. */
        vdev->config->reset(vdev);
 
-       refc = atomic_read(&disk_to_dev(vblk->disk)->kobj.kref.refcount);
+       refc = kref_read(&disk_to_dev(vblk->disk)->kobj.kref);
        put_disk(vblk->disk);
        vdev->config->del_vqs(vdev);
        kfree(vblk->vqs);
index 1d6c335584ec37d1ea399ccb4a07fd6e0120064e..33cd51632721fdb0eb76dc0b59cc10353f3366c4 100644 (file)
@@ -376,7 +376,7 @@ void drm_gem_cma_describe(struct drm_gem_cma_object *cma_obj,
        off = drm_vma_node_start(&obj->vma_node);
 
        seq_printf(m, "%2d (%2d) %08llx %pad %p %zu",
-                       obj->name, obj->refcount.refcount.counter,
+                       obj->name, kref_read(&obj->refcount),
                        off, &cma_obj->paddr, cma_obj->vaddr, obj->size);
 
        seq_printf(m, "\n");
index ffb2ab389d1d14863ed1e69c17419d560910afe5..6b68e90884360ff3ed724d2b2f7b667338324b00 100644 (file)
@@ -118,7 +118,7 @@ static int drm_gem_one_name_info(int id, void *ptr, void *data)
        seq_printf(m, "%6d %8zd %7d %8d\n",
                   obj->name, obj->size,
                   obj->handle_count,
-                  atomic_read(&obj->refcount.refcount));
+                  kref_read(&obj->refcount));
        return 0;
 }
 
index 9f17085b1fdd5ad6ccdd0266760788d10b1d6697..c6885a4911c093746a8bfbe191356130534378d9 100644 (file)
@@ -159,7 +159,7 @@ EXPORT_SYMBOL(drm_mode_object_find);
 void drm_mode_object_unreference(struct drm_mode_object *obj)
 {
        if (obj->free_cb) {
-               DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, atomic_read(&obj->refcount.refcount));
+               DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, kref_read(&obj->refcount));
                kref_put(&obj->refcount, obj->free_cb);
        }
 }
@@ -176,7 +176,7 @@ EXPORT_SYMBOL(drm_mode_object_unreference);
 void drm_mode_object_reference(struct drm_mode_object *obj)
 {
        if (obj->free_cb) {
-               DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, atomic_read(&obj->refcount.refcount));
+               DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, kref_read(&obj->refcount));
                kref_get(&obj->refcount);
        }
 }
index 114dddbd297bacf36406b7a4abdff39e71cdd81b..aa6e35ddc87f5b5596a5f318ad7d2c5d7098449c 100644 (file)
@@ -486,7 +486,7 @@ static void etnaviv_gem_describe(struct drm_gem_object *obj, struct seq_file *m)
 
        seq_printf(m, "%08x: %c %2d (%2d) %08lx %p %zd\n",
                        etnaviv_obj->flags, is_active(etnaviv_obj) ? 'A' : 'I',
-                       obj->name, obj->refcount.refcount.counter,
+                       obj->name, kref_read(&obj->refcount),
                        off, etnaviv_obj->vaddr, obj->size);
 
        rcu_read_lock();
index 6a368de9d81e7be2d6e775b3cca7c7187e6a4c88..ecfefb9d42e4a85ee94946d6d1406f5084612874 100644 (file)
@@ -256,7 +256,7 @@ extern void drm_gem_object_unreference_unlocked(struct drm_gem_object *);
 static inline bool
 i915_gem_object_is_dead(const struct drm_i915_gem_object *obj)
 {
-       return atomic_read(&obj->base.refcount.refcount) == 0;
+       return kref_read(&obj->base.refcount) == 0;
 }
 
 static inline bool
index d8bc59c7e26142b377623a6736c575b30f6eeea2..4d24d93890368dd8d631eba64d17d535c83b8a51 100644 (file)
@@ -640,7 +640,7 @@ void msm_gem_describe(struct drm_gem_object *obj, struct seq_file *m)
 
        seq_printf(m, "%08x: %c %2d (%2d) %08llx %p\t",
                        msm_obj->flags, is_active(msm_obj) ? 'A' : 'I',
-                       obj->name, obj->refcount.refcount.counter,
+                       obj->name, kref_read(&obj->refcount),
                        off, msm_obj->vaddr);
 
        for (id = 0; id < priv->num_aspaces; id++)
index a6126c93f215b0118e2c152cd0ad18d87c6f62ea..88ee60d1b907012cb2ae1ccc7dad3e89f9233a02 100644 (file)
@@ -527,7 +527,7 @@ static bool nouveau_fence_no_signaling(struct dma_fence *f)
         * caller should have a reference on the fence,
         * else fence could get freed here
         */
-       WARN_ON(atomic_read(&fence->base.refcount.refcount) <= 1);
+       WARN_ON(kref_read(&fence->base.refcount) <= 1);
 
        /*
         * This needs uevents to work correctly, but dma_fence_add_callback relies on
index 4a90c690f09e4e7b7bb8645ad4e09b2d68cbd0e5..74a9968df421dfdc888443b0c2fd387f8f53dd1d 100644 (file)
@@ -1033,7 +1033,7 @@ void omap_gem_describe(struct drm_gem_object *obj, struct seq_file *m)
        off = drm_vma_node_start(&obj->vma_node);
 
        seq_printf(m, "%08x: %2d (%2d) %08llx %pad (%2d) %p %4d",
-                       omap_obj->flags, obj->name, obj->refcount.refcount.counter,
+                       omap_obj->flags, obj->name, kref_read(&obj->refcount),
                        off, &omap_obj->paddr, omap_obj->paddr_cnt,
                        omap_obj->vaddr, omap_obj->roll);
 
index d5063618efa773757ff1608f3e0caf535ef2cc85..30aefcc0c969e755bbcd33277692e5ed116be254 100644 (file)
@@ -140,8 +140,8 @@ static void ttm_bo_release_list(struct kref *list_kref)
        struct ttm_bo_device *bdev = bo->bdev;
        size_t acc_size = bo->acc_size;
 
-       BUG_ON(atomic_read(&bo->list_kref.refcount));
-       BUG_ON(atomic_read(&bo->kref.refcount));
+       BUG_ON(kref_read(&bo->list_kref));
+       BUG_ON(kref_read(&bo->kref));
        BUG_ON(atomic_read(&bo->cpu_writers));
        BUG_ON(bo->mem.mm_node != NULL);
        BUG_ON(!list_empty(&bo->lru));
index 4f5fa8d65fe932a7e10803d10d0e0fc3090a7d59..fdb451e3ec01184a4642e6facd6ddf8e5f0cad47 100644 (file)
@@ -304,7 +304,7 @@ bool ttm_ref_object_exists(struct ttm_object_file *tfile,
         * Verify that the ref->obj pointer was actually valid!
         */
        rmb();
-       if (unlikely(atomic_read(&ref->kref.refcount) == 0))
+       if (unlikely(kref_read(&ref->kref) == 0))
                goto out_false;
 
        rcu_read_unlock();
index b9efadfffb4f64b39e991230b25e676c9a23c777..e66e75921797446019fc67974a2baf4e1d4980a5 100644 (file)
 
 #define put_ep(ep) { \
        PDBG("put_ep (via %s:%u) ep %p refcnt %d\n", __func__, __LINE__,  \
-            ep, atomic_read(&((ep)->kref.refcount))); \
-       WARN_ON(atomic_read(&((ep)->kref.refcount)) < 1); \
+            ep, kref_read(&((ep)->kref))); \
+       WARN_ON(kref_read(&((ep)->kref)) < 1); \
        kref_put(&((ep)->kref), __free_ep); \
 }
 
 #define get_ep(ep) { \
        PDBG("get_ep (via %s:%u) ep %p, refcnt %d\n", __func__, __LINE__, \
-            ep, atomic_read(&((ep)->kref.refcount))); \
+            ep, kref_read(&((ep)->kref))); \
        kref_get(&((ep)->kref));  \
 }
 
index d939980a708fdcf1daa6a7a53686cb6509ef2bb5..a9194db7f9b88ead8be50b18051baf653d7aa505 100644 (file)
@@ -961,7 +961,7 @@ int iwch_modify_qp(struct iwch_dev *rhp, struct iwch_qp *qhp,
        case IWCH_QP_STATE_RTS:
                switch (attrs->next_state) {
                case IWCH_QP_STATE_CLOSING:
-                       BUG_ON(atomic_read(&qhp->ep->com.kref.refcount) < 2);
+                       BUG_ON(kref_read(&qhp->ep->com.kref) < 2);
                        qhp->attr.state = IWCH_QP_STATE_CLOSING;
                        if (!internal) {
                                abort=0;
index 4788e1a46fdee23cce2956cc17ba8d09b0f3eb56..4dc141596e57b5ecc84552a91d732c5fc72a9629 100644 (file)
@@ -654,14 +654,14 @@ enum c4iw_mmid_state {
 
 #define c4iw_put_ep(ep) { \
        PDBG("put_ep (via %s:%u) ep %p refcnt %d\n", __func__, __LINE__,  \
-            ep, atomic_read(&((ep)->kref.refcount))); \
-       WARN_ON(atomic_read(&((ep)->kref.refcount)) < 1); \
+            ep, kref_read(&((ep)->kref))); \
+       WARN_ON(kref_read(&((ep)->kref)) < 1); \
        kref_put(&((ep)->kref), _c4iw_free_ep); \
 }
 
 #define c4iw_get_ep(ep) { \
        PDBG("get_ep (via %s:%u) ep %p, refcnt %d\n", __func__, __LINE__, \
-            ep, atomic_read(&((ep)->kref.refcount))); \
+            ep, kref_read(&((ep)->kref))); \
        kref_get(&((ep)->kref));  \
 }
 void _c4iw_free_ep(struct kref *kref);
index cda5542e13a206347447a49f18f9e8cb930e7c8c..347b3c93ffd78f0c475b24b816647f4cae3b6e88 100644 (file)
@@ -1503,7 +1503,7 @@ int c4iw_modify_qp(struct c4iw_dev *rhp, struct c4iw_qp *qhp,
        case C4IW_QP_STATE_RTS:
                switch (attrs->next_state) {
                case C4IW_QP_STATE_CLOSING:
-                       BUG_ON(atomic_read(&qhp->ep->com.kref.refcount) < 2);
+                       BUG_ON(kref_read(&qhp->ep->com.kref) < 2);
                        t4_set_wq_in_error(&qhp->wq);
                        set_state(qhp, C4IW_QP_STATE_CLOSING);
                        ep = qhp->ep;
index 80ef3f8998c87136a6f941e151138f1440aa031e..04443242e25877ccd65a569500574e89a64aa433 100644 (file)
@@ -80,7 +80,7 @@ usnic_ib_show_config(struct device *device, struct device_attribute *attr,
        left = PAGE_SIZE;
 
        mutex_lock(&us_ibdev->usdev_lock);
-       if (atomic_read(&us_ibdev->vf_cnt.refcount) > 0) {
+       if (kref_read(&us_ibdev->vf_cnt) > 0) {
                char *busname;
 
                /*
@@ -99,7 +99,7 @@ usnic_ib_show_config(struct device *device, struct device_attribute *attr,
                        PCI_FUNC(us_ibdev->pdev->devfn),
                        netdev_name(us_ibdev->netdev),
                        us_ibdev->ufdev->mac,
-                       atomic_read(&us_ibdev->vf_cnt.refcount));
+                       kref_read(&us_ibdev->vf_cnt));
                UPDATE_PTR_LEFT(n, ptr, left);
 
                for (res_type = USNIC_VNIC_RES_TYPE_EOL;
@@ -147,7 +147,7 @@ usnic_ib_show_max_vf(struct device *device, struct device_attribute *attr,
        us_ibdev = container_of(device, struct usnic_ib_dev, ib_dev.dev);
 
        return scnprintf(buf, PAGE_SIZE, "%u\n",
-                       atomic_read(&us_ibdev->vf_cnt.refcount));
+                       kref_read(&us_ibdev->vf_cnt));
 }
 
 static ssize_t
index 74819a7951e28f64f41655cf8967adb950db6c47..69df8e353123c893aa1f34277bc86dd961bffdea 100644 (file)
@@ -291,11 +291,11 @@ int usnic_ib_query_device(struct ib_device *ibdev,
        qp_per_vf = max(us_ibdev->vf_res_cnt[USNIC_VNIC_RES_TYPE_WQ],
                        us_ibdev->vf_res_cnt[USNIC_VNIC_RES_TYPE_RQ]);
        props->max_qp = qp_per_vf *
-               atomic_read(&us_ibdev->vf_cnt.refcount);
+               kref_read(&us_ibdev->vf_cnt);
        props->device_cap_flags = IB_DEVICE_PORT_ACTIVE_EVENT |
                IB_DEVICE_SYS_IMAGE_GUID | IB_DEVICE_BLOCK_MULTICAST_LOOPBACK;
        props->max_cq = us_ibdev->vf_res_cnt[USNIC_VNIC_RES_TYPE_CQ] *
-               atomic_read(&us_ibdev->vf_cnt.refcount);
+               kref_read(&us_ibdev->vf_cnt);
        props->max_pd = USNIC_UIOM_MAX_PD_CNT;
        props->max_mr = USNIC_UIOM_MAX_MR_CNT;
        props->local_ca_ack_delay = 0;
index 7f1b282d7d963c65cf8a7a8bf5d7f559f668951e..cb290b8ca0c81296231f53457001c92be7c93639 100644 (file)
@@ -1396,7 +1396,7 @@ int genwqe_device_remove(struct genwqe_dev *cd)
         * application which will decrease this reference from
         * 1/unused to 0/illegal and not from 2/used 1/empty.
         */
-       rc = atomic_read(&cd->cdev_genwqe.kobj.kref.refcount);
+       rc = kref_read(&cd->cdev_genwqe.kobj.kref);
        if (rc != 1) {
                dev_err(&pci_dev->dev,
                        "[%s] err: cdev_genwqe...refcount=%d\n", __func__, rc);
index c6c051b52f55faf1b5896164a4e5e3e251f86899..e32a92341b547494f1f1497ac2a62e811f68dc65 100644 (file)
@@ -67,7 +67,7 @@ static ssize_t mei_dbgfs_read_meclients(struct file *fp, char __user *ubuf,
                                me_cl->props.max_number_of_connections,
                                me_cl->props.max_msg_length,
                                me_cl->props.single_recv_buf,
-                               atomic_read(&me_cl->refcnt.refcount));
+                               kref_read(&me_cl->refcnt));
 
                        mei_me_cl_put(me_cl);
                }
index 56efaf72d08e589bbaa13b15513534b144c1b174..d2961ef39a3a0f4106304de84287edff830a7d8c 100644 (file)
@@ -155,7 +155,7 @@ static void pnv_php_detach_device_nodes(struct device_node *parent)
                pnv_php_detach_device_nodes(dn);
 
                of_node_put(dn);
-               refcount = atomic_read(&dn->kobj.kref.refcount);
+               refcount = kref_read(&dn->kobj.kref);
                if (refcount != 1)
                        pr_warn("Invalid refcount %d on <%s>\n",
                                refcount, of_node_full_name(dn));
index 429d34c348b9fbddc373e22876ad4f5017788a8d..e42909524deed903e098cc2cade5a21626181f70 100644 (file)
@@ -345,7 +345,7 @@ EXPORT_SYMBOL_GPL(pci_create_slot);
 void pci_destroy_slot(struct pci_slot *slot)
 {
        dev_dbg(&slot->bus->dev, "dev %02x, dec refcount to %d\n",
-               slot->number, atomic_read(&slot->kobj.kref.refcount) - 1);
+               slot->number, kref_read(&slot->kobj.kref) - 1);
 
        mutex_lock(&pci_slot_mutex);
        kobject_put(&slot->kobj);
index f501095f91ace5c53f49018e5e2c755c0904fd61..898461b146cc20bc146471748ba71da8de271e0f 100644 (file)
@@ -74,7 +74,7 @@ static void bnx2fc_cmd_timeout(struct work_struct *work)
                                    &io_req->req_flags)) {
                        /* Handle internally generated ABTS timeout */
                        BNX2FC_IO_DBG(io_req, "ABTS timed out refcnt = %d\n",
-                                       io_req->refcount.refcount.counter);
+                                       kref_read(&io_req->refcount));
                        if (!(test_and_set_bit(BNX2FC_FLAG_ABTS_DONE,
                                               &io_req->req_flags))) {
                                /*
@@ -1141,7 +1141,7 @@ int bnx2fc_eh_abort(struct scsi_cmnd *sc_cmd)
                return SUCCESS;
        }
        BNX2FC_IO_DBG(io_req, "eh_abort - refcnt = %d\n",
-                     io_req->refcount.refcount.counter);
+                     kref_read(&io_req->refcount));
 
        /* Hold IO request across abort processing */
        kref_get(&io_req->refcount);
@@ -1299,7 +1299,7 @@ void bnx2fc_process_cleanup_compl(struct bnx2fc_cmd *io_req,
 {
        BNX2FC_IO_DBG(io_req, "Entered process_cleanup_compl "
                              "refcnt = %d, cmd_type = %d\n",
-                  io_req->refcount.refcount.counter, io_req->cmd_type);
+                  kref_read(&io_req->refcount), io_req->cmd_type);
        bnx2fc_scsi_done(io_req, DID_ERROR);
        kref_put(&io_req->refcount, bnx2fc_cmd_release);
        if (io_req->wait_for_comp)
@@ -1318,7 +1318,7 @@ void bnx2fc_process_abts_compl(struct bnx2fc_cmd *io_req,
        BNX2FC_IO_DBG(io_req, "Entered process_abts_compl xid = 0x%x"
                              "refcnt = %d, cmd_type = %d\n",
                   io_req->xid,
-                  io_req->refcount.refcount.counter, io_req->cmd_type);
+                  kref_read(&io_req->refcount), io_req->cmd_type);
 
        if (test_and_set_bit(BNX2FC_FLAG_ABTS_DONE,
                                       &io_req->req_flags)) {
index 95ba99044c3e9c2af6f0a8deb656b878c15cf656..18e0ea83d36172cf2fcc55ecfe8f3b133913f1d5 100644 (file)
@@ -301,7 +301,7 @@ static inline void __cxgbi_sock_put(const char *fn, struct cxgbi_sock *csk)
 {
        log_debug(1 << CXGBI_DBG_SOCK,
                "%s, put csk 0x%p, ref %u-1.\n",
-               fn, csk, atomic_read(&csk->refcnt.refcount));
+               fn, csk, kref_read(&csk->refcnt));
        kref_put(&csk->refcnt, cxgbi_sock_free);
 }
 #define cxgbi_sock_put(csk)    __cxgbi_sock_put(__func__, csk)
@@ -310,7 +310,7 @@ static inline void __cxgbi_sock_get(const char *fn, struct cxgbi_sock *csk)
 {
        log_debug(1 << CXGBI_DBG_SOCK,
                "%s, get csk 0x%p, ref %u+1.\n",
-               fn, csk, atomic_read(&csk->refcnt.refcount));
+               fn, csk, kref_read(&csk->refcnt));
        kref_get(&csk->refcnt);
 }
 #define cxgbi_sock_get(csk)    __cxgbi_sock_get(__func__, csk)
index a63542bac15333c24d5d4716900f6413447af696..caa7a7b0ec53b3d1319aa158c30bddf1ecdc0f19 100644 (file)
@@ -607,7 +607,7 @@ lpfc_debugfs_nodelist_data(struct lpfc_vport *vport, char *buf, int size)
                len += snprintf(buf+len, size-len, "usgmap:%x ",
                        ndlp->nlp_usg_map);
                len += snprintf(buf+len, size-len, "refcnt:%x",
-                       atomic_read(&ndlp->kref.refcount));
+                       kref_read(&ndlp->kref));
                len +=  snprintf(buf+len, size-len, "\n");
        }
        spin_unlock_irq(shost->host_lock);
index 236e4e51d1617243d279d09089d95bb50c0a09d6..7a88295460685a7ecb33aab961714f6e8900b8ca 100644 (file)
@@ -3688,7 +3688,7 @@ lpfc_mbx_cmpl_dflt_rpi(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
                lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_NODE,
                                 "0006 rpi%x DID:%x flg:%x %d map:%x %p\n",
                                 ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag,
-                                atomic_read(&ndlp->kref.refcount),
+                                kref_read(&ndlp->kref),
                                 ndlp->nlp_usg_map, ndlp);
                if (NLP_CHK_NODE_ACT(ndlp)) {
                        lpfc_nlp_put(ndlp);
index ed223937798a9d9653dda07daeb9f10c916a1b79..82047070cdc973940e042afa4ff28c7685f090f3 100644 (file)
@@ -3440,7 +3440,7 @@ lpfc_mbx_cmpl_reg_login(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
        lpfc_printf_vlog(vport, KERN_INFO, LOG_SLI,
                         "0002 rpi:%x DID:%x flg:%x %d map:%x %p\n",
                         ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag,
-                        atomic_read(&ndlp->kref.refcount),
+                        kref_read(&ndlp->kref),
                         ndlp->nlp_usg_map, ndlp);
        if (ndlp->nlp_flag & NLP_REG_LOGIN_SEND)
                ndlp->nlp_flag &= ~NLP_REG_LOGIN_SEND;
@@ -3861,7 +3861,7 @@ out:
        lpfc_printf_vlog(vport, KERN_INFO, LOG_SLI,
                         "0003 rpi:%x DID:%x flg:%x %d map%x %p\n",
                         ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag,
-                        atomic_read(&ndlp->kref.refcount),
+                        kref_read(&ndlp->kref),
                         ndlp->nlp_usg_map, ndlp);
 
        if (vport->port_state < LPFC_VPORT_READY) {
@@ -4238,7 +4238,7 @@ lpfc_enable_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
                                "0277 lpfc_enable_node: ndlp:x%p "
                                "usgmap:x%x refcnt:%d\n",
                                (void *)ndlp, ndlp->nlp_usg_map,
-                               atomic_read(&ndlp->kref.refcount));
+                               kref_read(&ndlp->kref));
                return NULL;
        }
        /* The ndlp should not already be in active mode */
@@ -4248,7 +4248,7 @@ lpfc_enable_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
                                "0278 lpfc_enable_node: ndlp:x%p "
                                "usgmap:x%x refcnt:%d\n",
                                (void *)ndlp, ndlp->nlp_usg_map,
-                               atomic_read(&ndlp->kref.refcount));
+                               kref_read(&ndlp->kref));
                return NULL;
        }
 
@@ -4272,7 +4272,7 @@ lpfc_enable_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
                                 "0008 rpi:%x DID:%x flg:%x refcnt:%d "
                                 "map:%x %p\n", ndlp->nlp_rpi, ndlp->nlp_DID,
                                 ndlp->nlp_flag,
-                                atomic_read(&ndlp->kref.refcount),
+                                kref_read(&ndlp->kref),
                                 ndlp->nlp_usg_map, ndlp);
        }
 
@@ -4546,7 +4546,7 @@ lpfc_unreg_rpi(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp)
                                    (bf_get(lpfc_sli_intf_if_type,
                                     &phba->sli4_hba.sli_intf) ==
                                      LPFC_SLI_INTF_IF_TYPE_2) &&
-                                   (atomic_read(&ndlp->kref.refcount) > 0)) {
+                                   (kref_read(&ndlp->kref) > 0)) {
                                        mbox->context1 = lpfc_nlp_get(ndlp);
                                        mbox->mbox_cmpl =
                                                lpfc_sli4_unreg_rpi_cmpl_clr;
@@ -4695,14 +4695,14 @@ lpfc_cleanup_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp)
                                "0280 lpfc_cleanup_node: ndlp:x%p "
                                "usgmap:x%x refcnt:%d\n",
                                (void *)ndlp, ndlp->nlp_usg_map,
-                               atomic_read(&ndlp->kref.refcount));
+                               kref_read(&ndlp->kref));
                lpfc_dequeue_node(vport, ndlp);
        } else {
                lpfc_printf_vlog(vport, KERN_WARNING, LOG_NODE,
                                "0281 lpfc_cleanup_node: ndlp:x%p "
                                "usgmap:x%x refcnt:%d\n",
                                (void *)ndlp, ndlp->nlp_usg_map,
-                               atomic_read(&ndlp->kref.refcount));
+                               kref_read(&ndlp->kref));
                lpfc_disable_node(vport, ndlp);
        }
 
@@ -4791,7 +4791,7 @@ lpfc_nlp_remove(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp)
                lpfc_printf_vlog(vport, KERN_INFO, LOG_NODE,
                                 "0005 rpi:%x DID:%x flg:%x %d map:%x %p\n",
                                 ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag,
-                                atomic_read(&ndlp->kref.refcount),
+                                kref_read(&ndlp->kref),
                                 ndlp->nlp_usg_map, ndlp);
                if ((mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL))
                        != NULL) {
@@ -5557,7 +5557,7 @@ lpfc_mbx_cmpl_fdmi_reg_login(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
        lpfc_printf_vlog(vport, KERN_INFO, LOG_SLI,
                         "0004 rpi:%x DID:%x flg:%x %d map:%x %p\n",
                         ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag,
-                        atomic_read(&ndlp->kref.refcount),
+                        kref_read(&ndlp->kref),
                         ndlp->nlp_usg_map, ndlp);
        /*
         * Start issuing Fabric-Device Management Interface (FDMI) command to
@@ -5728,7 +5728,7 @@ lpfc_nlp_init(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
                                 "0007 rpi:%x DID:%x flg:%x refcnt:%d "
                                 "map:%x %p\n", ndlp->nlp_rpi, ndlp->nlp_DID,
                                 ndlp->nlp_flag,
-                                atomic_read(&ndlp->kref.refcount),
+                                kref_read(&ndlp->kref),
                                 ndlp->nlp_usg_map, ndlp);
 
                ndlp->active_rrqs_xri_bitmap =
@@ -5767,7 +5767,7 @@ lpfc_nlp_release(struct kref *kref)
                        "0279 lpfc_nlp_release: ndlp:x%p did %x "
                        "usgmap:x%x refcnt:%d rpi:%x\n",
                        (void *)ndlp, ndlp->nlp_DID, ndlp->nlp_usg_map,
-                       atomic_read(&ndlp->kref.refcount), ndlp->nlp_rpi);
+                       kref_read(&ndlp->kref), ndlp->nlp_rpi);
 
        /* remove ndlp from action. */
        lpfc_nlp_remove(ndlp->vport, ndlp);
@@ -5804,7 +5804,7 @@ lpfc_nlp_get(struct lpfc_nodelist *ndlp)
                lpfc_debugfs_disc_trc(ndlp->vport, LPFC_DISC_TRC_NODE,
                        "node get:        did:x%x flg:x%x refcnt:x%x",
                        ndlp->nlp_DID, ndlp->nlp_flag,
-                       atomic_read(&ndlp->kref.refcount));
+                       kref_read(&ndlp->kref));
                /* The check of ndlp usage to prevent incrementing the
                 * ndlp reference count that is in the process of being
                 * released.
@@ -5817,7 +5817,7 @@ lpfc_nlp_get(struct lpfc_nodelist *ndlp)
                                "0276 lpfc_nlp_get: ndlp:x%p "
                                "usgmap:x%x refcnt:%d\n",
                                (void *)ndlp, ndlp->nlp_usg_map,
-                               atomic_read(&ndlp->kref.refcount));
+                               kref_read(&ndlp->kref));
                        return NULL;
                } else
                        kref_get(&ndlp->kref);
@@ -5844,7 +5844,7 @@ lpfc_nlp_put(struct lpfc_nodelist *ndlp)
        lpfc_debugfs_disc_trc(ndlp->vport, LPFC_DISC_TRC_NODE,
        "node put:        did:x%x flg:x%x refcnt:x%x",
                ndlp->nlp_DID, ndlp->nlp_flag,
-               atomic_read(&ndlp->kref.refcount));
+               kref_read(&ndlp->kref));
        phba = ndlp->phba;
        spin_lock_irqsave(&phba->ndlp_lock, flags);
        /* Check the ndlp memory free acknowledge flag to avoid the
@@ -5857,7 +5857,7 @@ lpfc_nlp_put(struct lpfc_nodelist *ndlp)
                                "0274 lpfc_nlp_put: ndlp:x%p "
                                "usgmap:x%x refcnt:%d\n",
                                (void *)ndlp, ndlp->nlp_usg_map,
-                               atomic_read(&ndlp->kref.refcount));
+                               kref_read(&ndlp->kref));
                return 1;
        }
        /* Check the ndlp inactivate log flag to avoid the possible
@@ -5870,7 +5870,7 @@ lpfc_nlp_put(struct lpfc_nodelist *ndlp)
                                "0275 lpfc_nlp_put: ndlp:x%p "
                                "usgmap:x%x refcnt:%d\n",
                                (void *)ndlp, ndlp->nlp_usg_map,
-                               atomic_read(&ndlp->kref.refcount));
+                               kref_read(&ndlp->kref));
                return 1;
        }
        /* For last put, mark the ndlp usage flags to make sure no
@@ -5878,7 +5878,7 @@ lpfc_nlp_put(struct lpfc_nodelist *ndlp)
         * in between the process when the final kref_put has been
         * invoked on this ndlp.
         */
-       if (atomic_read(&ndlp->kref.refcount) == 1) {
+       if (kref_read(&ndlp->kref) == 1) {
                /* Indicate ndlp is put to inactive state. */
                NLP_SET_IACT_REQ(ndlp);
                /* Acknowledge ndlp memory free has been seen. */
@@ -5906,8 +5906,8 @@ lpfc_nlp_not_used(struct lpfc_nodelist *ndlp)
        lpfc_debugfs_disc_trc(ndlp->vport, LPFC_DISC_TRC_NODE,
                "node not used:   did:x%x flg:x%x refcnt:x%x",
                ndlp->nlp_DID, ndlp->nlp_flag,
-               atomic_read(&ndlp->kref.refcount));
-       if (atomic_read(&ndlp->kref.refcount) == 1)
+               kref_read(&ndlp->kref));
+       if (kref_read(&ndlp->kref) == 1)
                if (lpfc_nlp_put(ndlp))
                        return 1;
        return 0;
index 4776fd85514f5886a195d409c25fca6f389468da..64717c171b15576a94726e76059f434483c3df1d 100644 (file)
@@ -2660,8 +2660,7 @@ lpfc_cleanup(struct lpfc_vport *vport)
                                                "usgmap:x%x refcnt:%d\n",
                                                ndlp->nlp_DID, (void *)ndlp,
                                                ndlp->nlp_usg_map,
-                                               atomic_read(
-                                                       &ndlp->kref.refcount));
+                                               kref_read(&ndlp->kref));
                        }
                        break;
                }
index 6643f6fc7795bcc09fc0c3ffd79a85b907ce6d94..dd28c69b6a929b1ed7c1154ecb791b736912b635 100644 (file)
@@ -371,7 +371,7 @@ static int tcm_qla2xxx_write_pending(struct se_cmd *se_cmd)
                 */
                pr_debug("write_pending aborted cmd[%p] refcount %d "
                        "transport_state %x, t_state %x, se_cmd_flags %x\n",
-                       cmd,cmd->se_cmd.cmd_kref.refcount.counter,
+                       cmd, kref_read(&cmd->se_cmd.cmd_kref),
                        cmd->se_cmd.transport_state,
                        cmd->se_cmd.t_state,
                        cmd->se_cmd.se_cmd_flags);
@@ -584,7 +584,7 @@ static int tcm_qla2xxx_queue_data_in(struct se_cmd *se_cmd)
                 */
                pr_debug("queue_data_in aborted cmd[%p] refcount %d "
                        "transport_state %x, t_state %x, se_cmd_flags %x\n",
-                       cmd,cmd->se_cmd.cmd_kref.refcount.counter,
+                       cmd, kref_read(&cmd->se_cmd.cmd_kref),
                        cmd->se_cmd.transport_state,
                        cmd->se_cmd.t_state,
                        cmd->se_cmd.se_cmd_flags);
index b653451843c84e81cdbea96fc0c8c006832e24c1..937c2d5d7ec3f922d17fa38ceaf9f67f43a0a87b 100644 (file)
@@ -1300,7 +1300,7 @@ static int ion_debug_heap_show(struct seq_file *s, void *unused)
                        seq_printf(s, "%16s %16u %16zu %d %d\n",
                                   buffer->task_comm, buffer->pid,
                                   buffer->size, buffer->kmap_cnt,
-                                  atomic_read(&buffer->ref.refcount));
+                                  kref_read(&buffer->ref));
                        total_orphaned_size += buffer->size;
                }
        }
index c7d7682b1412ba7b7cc8730a363b84aeed493adc..1e1df89b50181e97a6df0fbed0d6ba54c01439a2 100644 (file)
@@ -188,7 +188,7 @@ bool comedi_buf_is_mmapped(struct comedi_subdevice *s)
 {
        struct comedi_buf_map *bm = s->async->buf_map;
 
-       return bm && (atomic_read(&bm->refcount.refcount) > 1);
+       return bm && (kref_read(&bm->refcount) > 1);
 }
 
 int comedi_buf_alloc(struct comedi_device *dev, struct comedi_subdevice *s,
index d761025144f9dc178cc43d4803b4c79b0147815b..e18051185846ad2824ed7aef82ea66ca2898d83c 100644 (file)
@@ -788,7 +788,7 @@ static struct t10_pr_registration *__core_scsi3_alloc_registration(
                         * __core_scsi3_add_registration()
                         */
                        dest_lun = rcu_dereference_check(deve_tmp->se_lun,
-                               atomic_read(&deve_tmp->pr_kref.refcount) != 0);
+                               kref_read(&deve_tmp->pr_kref) != 0);
 
                        pr_reg_atp = __core_scsi3_do_alloc_registration(dev,
                                                nacl_tmp, dest_lun, deve_tmp,
@@ -1463,7 +1463,7 @@ static int core_scsi3_lunacl_depend_item(struct se_dev_entry *se_deve)
         * For nacl->dynamic_node_acl=1
         */
        lun_acl = rcu_dereference_check(se_deve->se_lun_acl,
-                               atomic_read(&se_deve->pr_kref.refcount) != 0);
+                               kref_read(&se_deve->pr_kref) != 0);
        if (!lun_acl)
                return 0;
 
@@ -1478,7 +1478,7 @@ static void core_scsi3_lunacl_undepend_item(struct se_dev_entry *se_deve)
         * For nacl->dynamic_node_acl=1
         */
        lun_acl = rcu_dereference_check(se_deve->se_lun_acl,
-                               atomic_read(&se_deve->pr_kref.refcount) != 0);
+                               kref_read(&se_deve->pr_kref) != 0);
        if (!lun_acl) {
                kref_put(&se_deve->pr_kref, target_pr_kref_release);
                return;
@@ -1759,7 +1759,7 @@ core_scsi3_decode_spec_i_port(
                 * 2nd loop which will never fail.
                 */
                dest_lun = rcu_dereference_check(dest_se_deve->se_lun,
-                               atomic_read(&dest_se_deve->pr_kref.refcount) != 0);
+                               kref_read(&dest_se_deve->pr_kref) != 0);
 
                dest_pr_reg = __core_scsi3_alloc_registration(cmd->se_dev,
                                        dest_node_acl, dest_lun, dest_se_deve,
@@ -3466,7 +3466,7 @@ after_iport_check:
                                        iport_ptr);
        if (!dest_pr_reg) {
                struct se_lun *dest_lun = rcu_dereference_check(dest_se_deve->se_lun,
-                               atomic_read(&dest_se_deve->pr_kref.refcount) != 0);
+                               kref_read(&dest_se_deve->pr_kref) != 0);
 
                spin_unlock(&dev->dev_reservation_lock);
                if (core_scsi3_alloc_registration(cmd->se_dev, dest_node_acl,
index fd5c3de794705bb467f8689540f8045e61629d7f..c91979c1463d95899f909bfe62b9f2d47eb2c1cc 100644 (file)
@@ -454,7 +454,7 @@ static void ft_sess_free(struct kref *kref)
 
 void ft_sess_put(struct ft_sess *sess)
 {
-       int sess_held = atomic_read(&sess->kref.refcount);
+       int sess_held = kref_read(&sess->kref);
 
        BUG_ON(!sess_held);
        kref_put(&sess->kref, ft_sess_free);
index 5e746adc8a2d5416b7e1bcbeb8c41559716599b4..365443cae5b1cdb4f58ddb31d29c011dde26021a 100644 (file)
@@ -3687,7 +3687,7 @@ static void ffs_closed(struct ffs_data *ffs)
                goto done;
 
        if (opts->no_configfs || !opts->func_inst.group.cg_item.ci_parent
-           || !atomic_read(&opts->func_inst.group.cg_item.ci_kref.refcount))
+           || !kref_read(&opts->func_inst.group.cg_item.ci_kref))
                goto done;
 
        ci = opts->func_inst.group.cg_item.ci_parent->ci_parent;
index 5e6a2c0a1f0b3eb78ed88d124a56b24453f9e790..1f7d5e46cdda12c20a66403b05e5524a9a3515f0 100644 (file)
@@ -122,7 +122,7 @@ void exofs_sysfs_dbg_print(void)
        list_for_each_entry_safe(k_name, k_tmp, &exofs_kset->list, entry) {
                printk(KERN_INFO "%s: name %s ref %d\n",
                        __func__, kobject_name(k_name),
-                       (int)atomic_read(&k_name->kref.refcount));
+                       (int)kref_read(&k_name->kref));
        }
 #endif
 }
index 27d1242c8383ba6a6962749cc4443d2feef77c93..564c504d6efd8c99f903e95d96a87b47ce7db36a 100644 (file)
@@ -349,7 +349,7 @@ static void sc_show_sock_container(struct seq_file *seq,
                   "  func key:        0x%08x\n"
                   "  func type:       %u\n",
                   sc,
-                  atomic_read(&sc->sc_kref.refcount),
+                  kref_read(&sc->sc_kref),
                   &saddr, inet ? ntohs(sport) : 0,
                   &daddr, inet ? ntohs(dport) : 0,
                   sc->sc_node->nd_name,
index d4b5c81f0445992294dc33b523ab21025940ea76..ec000575e8634333c32f56142d203b74e4ace45a 100644 (file)
@@ -97,7 +97,7 @@
        typeof(sc) __sc = (sc);                                         \
        mlog(ML_SOCKET, "[sc %p refs %d sock %p node %u page %p "       \
             "pg_off %zu] " fmt, __sc,                                  \
-            atomic_read(&__sc->sc_kref.refcount), __sc->sc_sock,       \
+            kref_read(&__sc->sc_kref), __sc->sc_sock,  \
            __sc->sc_node->nd_num, __sc->sc_page, __sc->sc_page_off ,   \
            ##args);                                                    \
 } while (0)
index e7b760deefaee65402416e187ad4e2b40fc13e62..9b984cae4c4e0dc6f7b85b02baba6cadd11ac0a4 100644 (file)
@@ -81,7 +81,7 @@ static void __dlm_print_lock(struct dlm_lock *lock)
               lock->ml.type, lock->ml.convert_type, lock->ml.node,
               dlm_get_lock_cookie_node(be64_to_cpu(lock->ml.cookie)),
               dlm_get_lock_cookie_seq(be64_to_cpu(lock->ml.cookie)),
-              atomic_read(&lock->lock_refs.refcount),
+              kref_read(&lock->lock_refs),
               (list_empty(&lock->ast_list) ? 'y' : 'n'),
               (lock->ast_pending ? 'y' : 'n'),
               (list_empty(&lock->bast_list) ? 'y' : 'n'),
@@ -106,7 +106,7 @@ void __dlm_print_one_lock_resource(struct dlm_lock_resource *res)
        printk("lockres: %s, owner=%u, state=%u\n",
               buf, res->owner, res->state);
        printk("  last used: %lu, refcnt: %u, on purge list: %s\n",
-              res->last_used, atomic_read(&res->refs.refcount),
+              res->last_used, kref_read(&res->refs),
               list_empty(&res->purge) ? "no" : "yes");
        printk("  on dirty list: %s, on reco list: %s, "
               "migrating pending: %s\n",
@@ -298,7 +298,7 @@ static int dump_mle(struct dlm_master_list_entry *mle, char *buf, int len)
                        mle_type, mle->master, mle->new_master,
                        !list_empty(&mle->hb_events),
                        !!mle->inuse,
-                       atomic_read(&mle->mle_refs.refcount));
+                       kref_read(&mle->mle_refs));
 
        out += snprintf(buf + out, len - out, "Maybe=");
        out += stringify_nodemap(mle->maybe_map, O2NM_MAX_NODES,
@@ -494,7 +494,7 @@ static int dump_lock(struct dlm_lock *lock, int list_type, char *buf, int len)
                       lock->ast_pending, lock->bast_pending,
                       lock->convert_pending, lock->lock_pending,
                       lock->cancel_pending, lock->unlock_pending,
-                      atomic_read(&lock->lock_refs.refcount));
+                      kref_read(&lock->lock_refs));
        spin_unlock(&lock->spinlock);
 
        return out;
@@ -521,7 +521,7 @@ static int dump_lockres(struct dlm_lock_resource *res, char *buf, int len)
                        !list_empty(&res->recovering),
                        res->inflight_locks, res->migration_pending,
                        atomic_read(&res->asts_reserved),
-                       atomic_read(&res->refs.refcount));
+                       kref_read(&res->refs));
 
        /* refmap */
        out += snprintf(buf + out, len - out, "RMAP:");
@@ -777,7 +777,7 @@ static int debug_state_print(struct dlm_ctxt *dlm, char *buf, int len)
        /* Purge Count: xxx  Refs: xxx */
        out += snprintf(buf + out, len - out,
                        "Purge Count: %d  Refs: %d\n", dlm->purge_count,
-                       atomic_read(&dlm->dlm_refs.refcount));
+                       kref_read(&dlm->dlm_refs));
 
        /* Dead Node: xxx */
        out += snprintf(buf + out, len - out,
index 733e4e79c8e25f02e3a3af1ad562049d32742cbc..32fd261ae13d02ce0844285b3cb8c7b529f0a3ab 100644 (file)
@@ -2072,7 +2072,7 @@ static struct dlm_ctxt *dlm_alloc_ctxt(const char *domain,
        INIT_LIST_HEAD(&dlm->dlm_eviction_callbacks);
 
        mlog(0, "context init: refcount %u\n",
-                 atomic_read(&dlm->dlm_refs.refcount));
+                 kref_read(&dlm->dlm_refs));
 
 leave:
        if (ret < 0 && dlm) {
index a464c8088170aa3fc40267e79cc84b8bd39139a7..7025d8c279991e36ec5f9eaaebf585254b3604dd 100644 (file)
@@ -233,7 +233,7 @@ static void __dlm_put_mle(struct dlm_master_list_entry *mle)
 
        assert_spin_locked(&dlm->spinlock);
        assert_spin_locked(&dlm->master_lock);
-       if (!atomic_read(&mle->mle_refs.refcount)) {
+       if (!kref_read(&mle->mle_refs)) {
                /* this may or may not crash, but who cares.
                 * it's a BUG. */
                mlog(ML_ERROR, "bad mle: %p\n", mle);
@@ -1124,9 +1124,9 @@ recheck:
                unsigned long timeo = msecs_to_jiffies(DLM_MASTERY_TIMEOUT_MS);
 
                /*
-               if (atomic_read(&mle->mle_refs.refcount) < 2)
+               if (kref_read(&mle->mle_refs) < 2)
                        mlog(ML_ERROR, "mle (%p) refs=%d, name=%.*s\n", mle,
-                       atomic_read(&mle->mle_refs.refcount),
+                       kref_read(&mle->mle_refs),
                        res->lockname.len, res->lockname.name);
                */
                atomic_set(&mle->woken, 0);
@@ -1979,7 +1979,7 @@ ok:
                 * on this mle. */
                spin_lock(&dlm->master_lock);
 
-               rr = atomic_read(&mle->mle_refs.refcount);
+               rr = kref_read(&mle->mle_refs);
                if (mle->inuse > 0) {
                        if (extra_ref && rr < 3)
                                err = 1;
index 1082b2c3014bed10ecafb04e2b17b1585acb0275..63d701cd1e2e70a1d5962c253ca5625d418d7992 100644 (file)
@@ -251,7 +251,7 @@ leave:
                mlog(0, "lock %u:%llu should be gone now! refs=%d\n",
                     dlm_get_lock_cookie_node(be64_to_cpu(lock->ml.cookie)),
                     dlm_get_lock_cookie_seq(be64_to_cpu(lock->ml.cookie)),
-                    atomic_read(&lock->lock_refs.refcount)-1);
+                    kref_read(&lock->lock_refs)-1);
                dlm_lock_put(lock);
        }
        if (actions & DLM_UNLOCK_CALL_AST)
index 1ddfa2928802249f8c5abefb80ed71577bb04c12..a232e7f0c8695090f7a86805aaef73bb024ef8df 100644 (file)
@@ -247,7 +247,7 @@ static inline void drm_framebuffer_unreference(struct drm_framebuffer *fb)
  */
 static inline uint32_t drm_framebuffer_read_refcount(struct drm_framebuffer *fb)
 {
-       return atomic_read(&fb->base.refcount.refcount);
+       return kref_read(&fb->base.refcount);
 }
 
 /**
index cdbdb40eb5bd3a83d1a2ea594c0de3efa9226c02..feecf33a1212279d19eee8d0dfd266be3ed99351 100644 (file)
@@ -878,7 +878,7 @@ static inline int ttm_bo_reserve(struct ttm_buffer_object *bo,
 {
        int ret;
 
-       WARN_ON(!atomic_read(&bo->kref.refcount));
+       WARN_ON(!kref_read(&bo->kref));
 
        ret = __ttm_bo_reserve(bo, interruptible, no_wait, ticket);
        if (likely(ret == 0))
@@ -903,7 +903,7 @@ static inline int ttm_bo_reserve_slowpath(struct ttm_buffer_object *bo,
 {
        int ret = 0;
 
-       WARN_ON(!atomic_read(&bo->kref.refcount));
+       WARN_ON(!kref_read(&bo->kref));
 
        if (interruptible)
                ret = ww_mutex_lock_slow_interruptible(&bo->resv->lock,
index 9af255ad1e2fcceb12feb2c9bd57c5f268205068..7c88d865f82f003248e446cf1cf8aea44c391927 100644 (file)
@@ -35,6 +35,11 @@ static inline void kref_init(struct kref *kref)
        atomic_set(&kref->refcount, 1);
 }
 
+static inline int kref_read(const struct kref *kref)
+{
+       return atomic_read(&kref->refcount);
+}
+
 /**
  * kref_get - increment refcount for object.
  * @kref: object.
index 62a60eeacb0aeaf9907a5247d42706851fec3ffb..8a511c0985aafe0a18722c9dd701cf8326dcad59 100644 (file)
@@ -198,7 +198,7 @@ static inline struct cache_head  *cache_get(struct cache_head *h)
 
 static inline void cache_put(struct cache_head *h, struct cache_detail *cd)
 {
-       if (atomic_read(&h->ref.refcount) <= 2 &&
+       if (kref_read(&h->ref) <= 2 &&
            h->expiry_time < cd->nextcheck)
                cd->nextcheck = h->expiry_time;
        kref_put(&h->ref, cd->cache_put);
index 554671c81f4a39a8a773a01a318af0b1c70b5617..90708f68cc024e18ddb9be2b55e28aaaf6425b92 100644 (file)
@@ -987,7 +987,7 @@ static inline void hci_conn_drop(struct hci_conn *conn)
 static inline void hci_dev_put(struct hci_dev *d)
 {
        BT_DBG("%s orig refcnt %d", d->name,
-              atomic_read(&d->dev.kobj.kref.refcount));
+              kref_read(&d->dev.kobj.kref));
 
        put_device(&d->dev);
 }
@@ -995,7 +995,7 @@ static inline void hci_dev_put(struct hci_dev *d)
 static inline struct hci_dev *hci_dev_hold(struct hci_dev *d)
 {
        BT_DBG("%s orig refcnt %d", d->name,
-              atomic_read(&d->dev.kobj.kref.refcount));
+              kref_read(&d->dev.kobj.kref));
 
        get_device(&d->dev);
        return d;
index 1904a93f47d50a2bd1c2c1651f48b1ab762ece3c..d491529332f4568b532759331bd8f88653573ba0 100644 (file)
@@ -920,7 +920,7 @@ static void chan_close_cb(struct l2cap_chan *chan)
                        BT_DBG("dev %p removing %speer %p", dev,
                               last ? "last " : "1 ", peer);
                        BT_DBG("chan %p orig refcnt %d", chan,
-                              atomic_read(&chan->kref.refcount));
+                              kref_read(&chan->kref));
 
                        l2cap_chan_put(chan);
                        break;
index 5f123c3320a7be1f355d31f1023d3e3996853339..f0095fd79818de116164a226e7d9feb27abfa5b4 100644 (file)
@@ -810,7 +810,7 @@ static struct l2cap_chan *a2mp_chan_open(struct l2cap_conn *conn, bool locked)
 /* AMP Manager functions */
 struct amp_mgr *amp_mgr_get(struct amp_mgr *mgr)
 {
-       BT_DBG("mgr %p orig refcnt %d", mgr, atomic_read(&mgr->kref.refcount));
+       BT_DBG("mgr %p orig refcnt %d", mgr, kref_read(&mgr->kref));
 
        kref_get(&mgr->kref);
 
@@ -833,7 +833,7 @@ static void amp_mgr_destroy(struct kref *kref)
 
 int amp_mgr_put(struct amp_mgr *mgr)
 {
-       BT_DBG("mgr %p orig refcnt %d", mgr, atomic_read(&mgr->kref.refcount));
+       BT_DBG("mgr %p orig refcnt %d", mgr, kref_read(&mgr->kref));
 
        return kref_put(&mgr->kref, &amp_mgr_destroy);
 }
index e32f34189007967e7674a501e2c944029623cfab..02a4ccc04e1ebba5301f8d2bfec55229d428ffd8 100644 (file)
@@ -24,7 +24,7 @@
 void amp_ctrl_get(struct amp_ctrl *ctrl)
 {
        BT_DBG("ctrl %p orig refcnt %d", ctrl,
-              atomic_read(&ctrl->kref.refcount));
+              kref_read(&ctrl->kref));
 
        kref_get(&ctrl->kref);
 }
@@ -42,7 +42,7 @@ static void amp_ctrl_destroy(struct kref *kref)
 int amp_ctrl_put(struct amp_ctrl *ctrl)
 {
        BT_DBG("ctrl %p orig refcnt %d", ctrl,
-              atomic_read(&ctrl->kref.refcount));
+              kref_read(&ctrl->kref));
 
        return kref_put(&ctrl->kref, &amp_ctrl_destroy);
 }
index ce0b5dd01953694ffdcff246b8c3ab47ee689c03..fc7f321a382369f0d5097ce785921b1298a237f0 100644 (file)
@@ -481,14 +481,14 @@ static void l2cap_chan_destroy(struct kref *kref)
 
 void l2cap_chan_hold(struct l2cap_chan *c)
 {
-       BT_DBG("chan %p orig refcnt %d", c, atomic_read(&c->kref.refcount));
+       BT_DBG("chan %p orig refcnt %d", c, kref_read(&c->kref));
 
        kref_get(&c->kref);
 }
 
 void l2cap_chan_put(struct l2cap_chan *c)
 {
-       BT_DBG("chan %p orig refcnt %d", c, atomic_read(&c->kref.refcount));
+       BT_DBG("chan %p orig refcnt %d", c, kref_read(&c->kref));
 
        kref_put(&c->kref, l2cap_chan_destroy);
 }
index 770c52701efa3e08cec85c756fd7b8125f63ac91..bad3d4ae43f6e929e9af9616bd17e755ef6f9f69 100644 (file)
@@ -3425,7 +3425,7 @@ static void ceph_msg_release(struct kref *kref)
 struct ceph_msg *ceph_msg_get(struct ceph_msg *msg)
 {
        dout("%s %p (was %d)\n", __func__, msg,
-            atomic_read(&msg->kref.refcount));
+            kref_read(&msg->kref));
        kref_get(&msg->kref);
        return msg;
 }
@@ -3434,7 +3434,7 @@ EXPORT_SYMBOL(ceph_msg_get);
 void ceph_msg_put(struct ceph_msg *msg)
 {
        dout("%s %p (was %d)\n", __func__, msg,
-            atomic_read(&msg->kref.refcount));
+            kref_read(&msg->kref));
        kref_put(&msg->kref, ceph_msg_release);
 }
 EXPORT_SYMBOL(ceph_msg_put);
index 842f049abb86d9233f23581ea1a0cc003a0d7ecb..f3378ba1a82893024b9012c5421099bce87f1824 100644 (file)
@@ -438,7 +438,7 @@ static void ceph_osdc_release_request(struct kref *kref)
 void ceph_osdc_get_request(struct ceph_osd_request *req)
 {
        dout("%s %p (was %d)\n", __func__, req,
-            atomic_read(&req->r_kref.refcount));
+            kref_read(&req->r_kref));
        kref_get(&req->r_kref);
 }
 EXPORT_SYMBOL(ceph_osdc_get_request);
@@ -447,7 +447,7 @@ void ceph_osdc_put_request(struct ceph_osd_request *req)
 {
        if (req) {
                dout("%s %p (was %d)\n", __func__, req,
-                    atomic_read(&req->r_kref.refcount));
+                    kref_read(&req->r_kref));
                kref_put(&req->r_kref, ceph_osdc_release_request);
        }
 }
@@ -487,11 +487,11 @@ static void request_reinit(struct ceph_osd_request *req)
        struct ceph_msg *reply_msg = req->r_reply;
 
        dout("%s req %p\n", __func__, req);
-       WARN_ON(atomic_read(&req->r_kref.refcount) != 1);
+       WARN_ON(kref_read(&req->r_kref) != 1);
        request_release_checks(req);
 
-       WARN_ON(atomic_read(&request_msg->kref.refcount) != 1);
-       WARN_ON(atomic_read(&reply_msg->kref.refcount) != 1);
+       WARN_ON(kref_read(&request_msg->kref) != 1);
+       WARN_ON(kref_read(&reply_msg->kref) != 1);
        target_destroy(&req->r_t);
 
        request_init(req);
index 8147e8d56eb214667a9d27a946bacde32637653d..f39e3e11f9aa283698ced6a8ca92fed5f68140e5 100644 (file)
@@ -1358,7 +1358,7 @@ static int c_show(struct seq_file *m, void *p)
        ifdebug(CACHE)
                seq_printf(m, "# expiry=%ld refcnt=%d flags=%lx\n",
                           convert_to_wallclock(cp->expiry_time),
-                          atomic_read(&cp->ref.refcount), cp->flags);
+                          kref_read(&cp->ref), cp->flags);
        cache_get(cp);
        if (cache_check(cd, cp, NULL))
                /* cache_check does a cache_put on failure */
index 3bc1d61694cbbbf7a094a1849b747b65760550b2..04e7f8707d719398d95a814b40f9a5dddbd009ce 100644 (file)
@@ -490,7 +490,7 @@ static struct svc_xprt *svc_xprt_dequeue(struct svc_pool *pool)
                svc_xprt_get(xprt);
 
                dprintk("svc: transport %p dequeued, inuse=%d\n",
-                       xprt, atomic_read(&xprt->xpt_ref.refcount));
+                       xprt, kref_read(&xprt->xpt_ref));
        }
        spin_unlock_bh(&pool->sp_lock);
 out:
@@ -820,7 +820,7 @@ static int svc_handle_xprt(struct svc_rqst *rqstp, struct svc_xprt *xprt)
                /* XPT_DATA|XPT_DEFERRED case: */
                dprintk("svc: server %p, pool %u, transport %p, inuse=%d\n",
                        rqstp, rqstp->rq_pool->sp_id, xprt,
-                       atomic_read(&xprt->xpt_ref.refcount));
+                       kref_read(&xprt->xpt_ref));
                rqstp->rq_deferred = svc_deferred_dequeue(xprt);
                if (rqstp->rq_deferred)
                        len = svc_deferred_recv(rqstp);
@@ -978,7 +978,7 @@ static void svc_age_temp_xprts(unsigned long closure)
                 * through, close it. */
                if (!test_and_set_bit(XPT_OLD, &xprt->xpt_flags))
                        continue;
-               if (atomic_read(&xprt->xpt_ref.refcount) > 1 ||
+               if (kref_read(&xprt->xpt_ref) > 1 ||
                    test_bit(XPT_BUSY, &xprt->xpt_flags))
                        continue;
                list_del_init(le);
index ca2799af05a6846980e2dfa2bd7c58c655a6f069..39652d390a9c60bc026199a7dcb5ef996bcd65ab 100644 (file)
@@ -1201,9 +1201,9 @@ static void __svc_rdma_free(struct work_struct *work)
                ib_drain_qp(rdma->sc_qp);
 
        /* We should only be called from kref_put */
-       if (atomic_read(&xprt->xpt_ref.refcount) != 0)
+       if (kref_read(&xprt->xpt_ref) != 0)
                pr_err("svcrdma: sc_xprt still in use? (%d)\n",
-                      atomic_read(&xprt->xpt_ref.refcount));
+                      kref_read(&xprt->xpt_ref));
 
        /*
         * Destroy queued, but not processed read completions. Note