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.

Fixes: c05ae9d85b47 ("dax/bus.c: replace driver-core lock usage by a local 
rwsem")
Cc: Dan Williams <dan.j.willi...@intel.com>
Reviewed-by: Dan Williams <dan.j.willi...@intel.com>
Signed-off-by: Vishal Verma <vishal.l.ve...@intel.com>
---
 drivers/dax/bus.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/dax/bus.c b/drivers/dax/bus.c
index 0011a6e6a8f2..f24b67c64d5e 100644
--- a/drivers/dax/bus.c
+++ b/drivers/dax/bus.c
@@ -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);
 }

-- 
2.44.0


Reply via email to