2012-06-24 17:41:07

by Larry Finger

[permalink] [raw]
Subject: Question about the export of symbol lockdep_init_map

Ingo,

when you added the locking correctness validator code in commit fbb9ce95, you
exported lockdep_init_map() with EXPORT_SYMBOL_GPL. This choice is causing a
problem with the latest version of Broadcom's hybrid wl driver. Although I do
not agree with their policies regarding drivers with binary blobs, there are
some devices such as the BCM43228 (14e4:4359) for which no open-source driver is
yet available. As a result, owners of such devices are forced to use solutions
such as ndiswrapper, which is worse than using wl.

would you accept the following patch?

Index: wireless-testing/kernel/lockdep.c
===================================================================
--- wireless-testing.orig/kernel/lockdep.c
+++ wireless-testing/kernel/lockdep.c
@@ -2994,7 +2994,7 @@ void lockdep_init_map(struct lockdep_map
if (subclass)
register_lock_class(lock, subclass, 1);
}
-EXPORT_SYMBOL_GPL(lockdep_init_map);
+EXPORT_SYMBOL(lockdep_init_map);

struct lock_class_key __lockdep_no_validate__;


Thanks,

Larry


2012-06-25 11:39:43

by Peter Zijlstra

[permalink] [raw]
Subject: Re: Question about the export of symbol lockdep_init_map

On Sun, 2012-06-24 at 12:41 -0500, Larry Finger wrote:
> Ingo,
>
> when you added the locking correctness validator code in commit fbb9ce95, you
> exported lockdep_init_map() with EXPORT_SYMBOL_GPL. This choice is causing a
> problem with the latest version of Broadcom's hybrid wl driver. Although I do
> not agree with their policies regarding drivers with binary blobs, there are
> some devices such as the BCM43228 (14e4:4359) for which no open-source driver is
> yet available. As a result, owners of such devices are forced to use solutions
> such as ndiswrapper, which is worse than using wl.
>
> would you accept the following patch?
>
> Index: wireless-testing/kernel/lockdep.c
> ===================================================================
> --- wireless-testing.orig/kernel/lockdep.c
> +++ wireless-testing/kernel/lockdep.c
> @@ -2994,7 +2994,7 @@ void lockdep_init_map(struct lockdep_map
> if (subclass)
> register_lock_class(lock, subclass, 1);
> }
> -EXPORT_SYMBOL_GPL(lockdep_init_map);
> +EXPORT_SYMBOL(lockdep_init_map);
>
> struct lock_class_key __lockdep_no_validate__;
>

I can't speak for Ingo, but I would object to it. Owners of such devices
can send them back to wherever they got them from and demand a refund.

Loading binary blobs pretty much wrecks your kernel validation anyway,
who knows what they do.