i2c: add a warning to i2c_adapter_depth()
authorBartosz Golaszewski <bgolaszewski@baylibre.com>
Fri, 16 Sep 2016 16:02:44 +0000 (18:02 +0200)
committerWolfram Sang <wsa@the-dreams.de>
Sat, 24 Sep 2016 08:50:00 +0000 (10:50 +0200)
This routine is only used together with lockdep for nested locking.
The number of lock subclasses is limited to 8 as defined in lockdep.h

Emit a warning if the adapter depth exceeds the maximum number of
lockdep subclasses.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Acked-by: Peter Rosin <peda@axentia.se>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/i2c-core.c

index 981de21..98fffa3 100644 (file)
@@ -1433,6 +1433,9 @@ unsigned int i2c_adapter_depth(struct i2c_adapter *adapter)
        while ((adapter = i2c_parent_is_i2c_adapter(adapter)))
                depth++;
 
        while ((adapter = i2c_parent_is_i2c_adapter(adapter)))
                depth++;
 
+       WARN_ONCE(depth >= MAX_LOCKDEP_SUBCLASSES,
+                 "adapter depth exceeds lockdep subclass limit\n");
+
        return depth;
 }
 EXPORT_SYMBOL_GPL(i2c_adapter_depth);
        return depth;
 }
 EXPORT_SYMBOL_GPL(i2c_adapter_depth);