From: John Hubbard <jhubb...@nvidia.com> Originally, kref_get and kref_put were available as standard routines that even non-GPL device drivers could use. However, as an unintended side effect of the recent kref_*() upgrade[1], these calls are now effectively GPL, because they get routed to the new refcount_inc() and refcount_dec_and_test() routines.
Make just those routines non-GPL, in order to restore the original behavior--and to avoid forcing simple users of krefs to re-implement atomic refcounting. [1] commit 10383aea2f44 ("kref: Implement 'struct kref' using refcount_t") Signed-off-by: John Hubbard <jhubb...@nvidia.com> --- lib/refcount.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/refcount.c b/lib/refcount.c index aa09ad3c30b0..6421a4930484 100644 --- a/lib/refcount.c +++ b/lib/refcount.c @@ -113,7 +113,7 @@ void refcount_inc(refcount_t *r) { WARN_ONCE(!refcount_inc_not_zero(r), "refcount_t: increment on 0; use-after-free.\n"); } -EXPORT_SYMBOL_GPL(refcount_inc); +EXPORT_SYMBOL(refcount_inc); bool refcount_sub_and_test(unsigned int i, refcount_t *r) { @@ -152,7 +152,7 @@ bool refcount_dec_and_test(refcount_t *r) { return refcount_sub_and_test(1, r); } -EXPORT_SYMBOL_GPL(refcount_dec_and_test); +EXPORT_SYMBOL(refcount_dec_and_test); /* * Similar to atomic_dec(), it will WARN on underflow and fail to decrement -- 2.12.0