Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751920AbdCHJfo (ORCPT ); Wed, 8 Mar 2017 04:35:44 -0500 Received: from mail-pf0-f193.google.com ([209.85.192.193]:36791 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750763AbdCHJfi (ORCPT ); Wed, 8 Mar 2017 04:35:38 -0500 From: john.hubbard@gmail.com X-Google-Original-From: jhubbard@nvidia.com To: Peter Zijlstra Cc: Greg Kroah-Hartman , Thomas Gleixner , Linus Torvalds , Ingo Molnar , linux-kernel@vger.kernel.org, John Hubbard Subject: [PATCH] refcount: restore kref_get and kref_put to non-GPL status Date: Wed, 8 Mar 2017 01:25:49 -0800 Message-Id: <20170308092549.28982-2-jhubbard@nvidia.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170308092549.28982-1-jhubbard@nvidia.com> References: <20170308092549.28982-1-jhubbard@nvidia.com> X-NVConfidentiality: public Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1402 Lines: 45 From: John Hubbard 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 --- 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