Skip to content

Commit c14c647

Browse files
stellarhopperakpm00
authored andcommitted
dax/bus.c: replace WARN_ON_ONCE() with lockdep asserts
Patch series "dax/bus.c: Fixups for dax-bus locking", v3. Commit Fixes: c05ae9d ("dax/bus.c: replace driver-core lock usage by a local rwsem") introduced a few problems that this series aims to fix. Add back device_lock() where it was correctly used (during device manipulation operations), remove conditional locking in unregister_dax_dev() and unregister_dax_mapping(), use non-interruptible versions of rwsem locks when not called from a user process, and fix up a write vs. read usage of an rwsem. This patch (of 4): In [1], Dan points out that all of the WARN_ON_ONCE() usage in the referenced patch should be replaced with lockdep_assert_held, or lockdep_held_assert_write(). Replace these as appropriate. Link: https://lkml.kernel.org/r/[email protected] Link: https://lore.kernel.org/r/65f0b5ef41817_aa222941a@dwillia2-mobl3.amr.corp.intel.com.notmuch [1] Link: https://lkml.kernel.org/r/[email protected] Fixes: c05ae9d ("dax/bus.c: replace driver-core lock usage by a local rwsem") Signed-off-by: Vishal Verma <[email protected]> Reported-by: Dan Williams <[email protected]> Reviewed-by: Dan Williams <[email protected]> Cc: Alison Schofield <[email protected]> Cc: Dave Jiang <[email protected]> Cc: Vishal Verma <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
1 parent 1872b3b commit c14c647

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

drivers/dax/bus.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ static u64 dev_dax_size(struct dev_dax *dev_dax)
192192
u64 size = 0;
193193
int i;
194194

195-
WARN_ON_ONCE(!rwsem_is_locked(&dax_dev_rwsem));
195+
lockdep_assert_held(&dax_dev_rwsem);
196196

197197
for (i = 0; i < dev_dax->nr_range; i++)
198198
size += range_len(&dev_dax->ranges[i].range);
@@ -302,7 +302,7 @@ static unsigned long long dax_region_avail_size(struct dax_region *dax_region)
302302
resource_size_t size = resource_size(&dax_region->res);
303303
struct resource *res;
304304

305-
WARN_ON_ONCE(!rwsem_is_locked(&dax_region_rwsem));
305+
lockdep_assert_held(&dax_region_rwsem);
306306

307307
for_each_dax_region_resource(dax_region, res)
308308
size -= resource_size(res);
@@ -447,7 +447,7 @@ static void trim_dev_dax_range(struct dev_dax *dev_dax)
447447
struct range *range = &dev_dax->ranges[i].range;
448448
struct dax_region *dax_region = dev_dax->region;
449449

450-
WARN_ON_ONCE(!rwsem_is_locked(&dax_region_rwsem));
450+
lockdep_assert_held_write(&dax_region_rwsem);
451451
dev_dbg(&dev_dax->dev, "delete range[%d]: %#llx:%#llx\n", i,
452452
(unsigned long long)range->start,
453453
(unsigned long long)range->end);
@@ -507,7 +507,7 @@ static int __free_dev_dax_id(struct dev_dax *dev_dax)
507507
struct dax_region *dax_region;
508508
int rc = dev_dax->id;
509509

510-
WARN_ON_ONCE(!rwsem_is_locked(&dax_dev_rwsem));
510+
lockdep_assert_held_write(&dax_dev_rwsem);
511511

512512
if (!dev_dax->dyn_id || dev_dax->id < 0)
513513
return -1;
@@ -713,7 +713,7 @@ static void __unregister_dax_mapping(void *data)
713713

714714
dev_dbg(dev, "%s\n", __func__);
715715

716-
WARN_ON_ONCE(!rwsem_is_locked(&dax_region_rwsem));
716+
lockdep_assert_held_write(&dax_region_rwsem);
717717

718718
dev_dax->ranges[mapping->range_id].mapping = NULL;
719719
mapping->range_id = -1;
@@ -830,7 +830,7 @@ static int devm_register_dax_mapping(struct dev_dax *dev_dax, int range_id)
830830
struct device *dev;
831831
int rc;
832832

833-
WARN_ON_ONCE(!rwsem_is_locked(&dax_region_rwsem));
833+
lockdep_assert_held_write(&dax_region_rwsem);
834834

835835
if (dev_WARN_ONCE(&dev_dax->dev, !dax_region->dev->driver,
836836
"region disabled\n"))
@@ -876,7 +876,7 @@ static int alloc_dev_dax_range(struct dev_dax *dev_dax, u64 start,
876876
struct resource *alloc;
877877
int i, rc;
878878

879-
WARN_ON_ONCE(!rwsem_is_locked(&dax_region_rwsem));
879+
lockdep_assert_held_write(&dax_region_rwsem);
880880

881881
/* handle the seed alloc special case */
882882
if (!size) {
@@ -935,7 +935,7 @@ static int adjust_dev_dax_range(struct dev_dax *dev_dax, struct resource *res, r
935935
struct device *dev = &dev_dax->dev;
936936
int rc;
937937

938-
WARN_ON_ONCE(!rwsem_is_locked(&dax_region_rwsem));
938+
lockdep_assert_held_write(&dax_region_rwsem);
939939

940940
if (dev_WARN_ONCE(dev, !size, "deletion is handled by dev_dax_shrink\n"))
941941
return -EINVAL;

0 commit comments

Comments
 (0)