dax/bus.c: use the right locking mode (read vs write) in size_show
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: c05ae9d85b
("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>
This commit is contained in:
parent
e39dbcfba7
commit
2acf04532d
@ -937,11 +937,11 @@ static ssize_t size_show(struct device *dev,
|
|||||||
unsigned long long size;
|
unsigned long long size;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
rc = down_write_killable(&dax_dev_rwsem);
|
rc = down_read_interruptible(&dax_dev_rwsem);
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
return rc;
|
||||||
size = dev_dax_size(dev_dax);
|
size = dev_dax_size(dev_dax);
|
||||||
up_write(&dax_dev_rwsem);
|
up_read(&dax_dev_rwsem);
|
||||||
|
|
||||||
return sysfs_emit(buf, "%llu\n", size);
|
return sysfs_emit(buf, "%llu\n", size);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user