dax/bus.c: use the right locking mode (read vs write) in size_show
authorVishal Verma <vishal.l.verma@intel.com>
Tue, 30 Apr 2024 17:44:26 +0000 (11:44 -0600)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 7 May 2024 17:37:01 +0000 (10:37 -0700)
In size_show(), the dax_dev_rwsem only needs a read lock, but was
acquiring a write lock.  Change it to down_read_interruptible() so it
doesn't unnecessarily hold a write lock.

Link: https://lkml.kernel.org/r/20240430-vv-dax_abi_fixes-v3-4-e3dcd755774c@intel.com
Fixes: c05ae9d85b47 ("dax/bus.c: replace driver-core lock usage by a local rwsem")
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Cc: Alison Schofield <alison.schofield@intel.com>
Cc: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
drivers/dax/bus.c

index 0011a6e6a8f2a629e1aa355527cdd9f0c98d337f..f24b67c64d5eccf7ab65b6eeef77c3195d2aa3f8 100644 (file)
@@ -937,11 +937,11 @@ static ssize_t size_show(struct device *dev,
        unsigned long long size;
        int rc;
 
-       rc = down_write_killable(&dax_dev_rwsem);
+       rc = down_read_interruptible(&dax_dev_rwsem);
        if (rc)
                return rc;
        size = dev_dax_size(dev_dax);
-       up_write(&dax_dev_rwsem);
+       up_read(&dax_dev_rwsem);
 
        return sysfs_emit(buf, "%llu\n", size);
 }