Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1594971 > unrolled thread

[PATCH 0/1] refcount: restore kref_get and kref_put to non-GPL status

Started byjohn.hubbard@gmail.com
First post2017-03-08 10:30 +0100
Last post2017-03-08 12:30 +0100
Articles 9 — 4 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH 0/1] refcount: restore kref_get and kref_put to non-GPL status john.hubbard@gmail.com - 2017-03-08 10:30 +0100
    [PATCH] refcount: restore kref_get and kref_put to non-GPL status john.hubbard@gmail.com - 2017-03-08 10:40 +0100
      Re: [PATCH] refcount: restore kref_get and kref_put to non-GPL status John Hubbard <jhubbard@nvidia.com> - 2017-03-08 11:00 +0100
      Re: [PATCH] refcount: restore kref_get and kref_put to non-GPL status Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-08 11:20 +0100
      Re: [PATCH] refcount: restore kref_get and kref_put to non-GPL status Christoph Hellwig <hch@infradead.org> - 2017-03-08 17:10 +0100
    Re: [PATCH 0/1] refcount: restore kref_get and kref_put to non-GPL  status Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-08 11:20 +0100
      Re: [PATCH 0/1] refcount: restore kref_get and kref_put to non-GPL  status Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-08 11:30 +0100
        Re: [PATCH 0/1] refcount: restore kref_get and kref_put to non-GPL  status John Hubbard <jhubbard@nvidia.com> - 2017-03-08 13:20 +0100
      Re: [PATCH 0/1] refcount: restore kref_get and kref_put to non-GPL  status John Hubbard <jhubbard@nvidia.com> - 2017-03-08 12:30 +0100

#1594971 — [PATCH 0/1] refcount: restore kref_get and kref_put to non-GPL status

Fromjohn.hubbard@gmail.com
Date2017-03-08 10:30 +0100
Subject[PATCH 0/1] refcount: restore kref_get and kref_put to non-GPL status
Message-ID<tiG4W-4sw-25@gated-at.bofh.it>
From: John Hubbard <jhubbard@nvidia.com>

Hi,

Say, I'm 99% sure that this was just an oversight, so
I'm sticking my neck out here and floating a patch to
Put Things Back. I'm hoping that there is not some
firm reason to GPL-protect the basic kref_get and
kref_put routines, because when designing some
recent new (open-source, yay!) device drivers, we relied
on this being available, even for MIT-licensed code.


John Hubbard (1):
  refcount: restore kref_get and kref_put to non-GPL status

 lib/refcount.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

-- 
2.12.0

[toc] | [next] | [standalone]


#1594981 — [PATCH] refcount: restore kref_get and kref_put to non-GPL status

Fromjohn.hubbard@gmail.com
Date2017-03-08 10:40 +0100
Subject[PATCH] refcount: restore kref_get and kref_put to non-GPL status
Message-ID<tiGeB-4xJ-1@gated-at.bofh.it>
In reply to#1594971
From: John Hubbard <jhubbard@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 <jhubbard@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

[toc] | [prev] | [next] | [standalone]


#1594996 — Re: [PATCH] refcount: restore kref_get and kref_put to non-GPL status

FromJohn Hubbard <jhubbard@nvidia.com>
Date2017-03-08 11:00 +0100
SubjectRe: [PATCH] refcount: restore kref_get and kref_put to non-GPL status
Message-ID<tiGxX-4My-3@gated-at.bofh.it>
In reply to#1594981

On 03/08/2017 01:50 AM, Greg Kroah-Hartman wrote:
> On Wed, Mar 08, 2017 at 01:25:49AM -0800, john.hubbard@gmail.com wrote:
>> From: John Hubbard <jhubbard@nvidia.com>
>>
>> Originally, kref_get and kref_put were available as
>> standard routines that even non-GPL device drivers
>> could use.
>
> As I stated in my response to the 0/1 of this patch, this sentence is
> not true, sorry, the inlined functions were GPL-v2-only.

OK, got it. I overlooked that point.

thanks
John Hubbard
NVIDIA

>
> thanks,
>
> greg k-h
>

[toc] | [prev] | [next] | [standalone]


#1595012 — Re: [PATCH] refcount: restore kref_get and kref_put to non-GPL status

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-03-08 11:20 +0100
SubjectRe: [PATCH] refcount: restore kref_get and kref_put to non-GPL status
Message-ID<tiGxX-4My-5@gated-at.bofh.it>
In reply to#1594981
On Wed, Mar 08, 2017 at 01:25:49AM -0800, john.hubbard@gmail.com wrote:
> From: John Hubbard <jhubbard@nvidia.com>
> 
> Originally, kref_get and kref_put were available as
> standard routines that even non-GPL device drivers
> could use.

As I stated in my response to the 0/1 of this patch, this sentence is
not true, sorry, the inlined functions were GPL-v2-only.

thanks,

greg k-h

[toc] | [prev] | [next] | [standalone]


#1595321 — Re: [PATCH] refcount: restore kref_get and kref_put to non-GPL status

FromChristoph Hellwig <hch@infradead.org>
Date2017-03-08 17:10 +0100
SubjectRe: [PATCH] refcount: restore kref_get and kref_put to non-GPL status
Message-ID<tiMk2-uK-21@gated-at.bofh.it>
In reply to#1594981
Hi John,

all Linux kernel code is licenced under the GPLv2.0, and maybe only
be used by derived works if that work is available under a
GPL-compatible license.  the _GPL export are just a very strong hint
that it's almost impossible not to be derived work - using non-trivial
inline functions should be a just as strong hint so this is not going
to change anything.

[toc] | [prev] | [next] | [standalone]


#1595016 — Re: [PATCH 0/1] refcount: restore kref_get and kref_put to non-GPL status

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-03-08 11:20 +0100
SubjectRe: [PATCH 0/1] refcount: restore kref_get and kref_put to non-GPL status
Message-ID<tiGRk-5aS-19@gated-at.bofh.it>
In reply to#1594971
On Wed, Mar 08, 2017 at 01:25:48AM -0800, john.hubbard@gmail.com wrote:
> From: John Hubbard <jhubbard@nvidia.com>
> 
> Hi,
> 
> Say, I'm 99% sure that this was just an oversight, so
> I'm sticking my neck out here and floating a patch to
> Put Things Back. I'm hoping that there is not some
> firm reason to GPL-protect the basic kref_get and
> kref_put routines, because when designing some
> recent new (open-source, yay!) device drivers, we relied
> on this being available, even for MIT-licensed code.

MIT-licensed code should be just fine with GPL symbols, just use the
correct MODULE_LICENSE() setting and all is good.

As all of the previous kref functions were in a GPL-only header file,
and included directly that way, they were already GPL-only symbols, so
there really was no change here except now the linker checks them.  If
you have questions about using inline GPL-only functions from a .h file,
in a non-GPL codebase, please consult your corporate lawyer to get
clarification.

thanks,

greg k-h

[toc] | [prev] | [next] | [standalone]


#1595022 — Re: [PATCH 0/1] refcount: restore kref_get and kref_put to non-GPL status

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2017-03-08 11:30 +0100
SubjectRe: [PATCH 0/1] refcount: restore kref_get and kref_put to non-GPL status
Message-ID<tiH0Z-5e8-9@gated-at.bofh.it>
In reply to#1595016
On Wed, Mar 08, 2017 at 01:59:33AM -0800, John Hubbard wrote:
> 
> 
> On 03/08/2017 01:48 AM, Greg Kroah-Hartman wrote:
> > On Wed, Mar 08, 2017 at 01:25:48AM -0800, john.hubbard@gmail.com wrote:
> > > From: John Hubbard <jhubbard@nvidia.com>
> > > 
> > > Hi,
> > > 
> > > Say, I'm 99% sure that this was just an oversight, so
> > > I'm sticking my neck out here and floating a patch to
> > > Put Things Back. I'm hoping that there is not some
> > > firm reason to GPL-protect the basic kref_get and
> > > kref_put routines, because when designing some
> > > recent new (open-source, yay!) device drivers, we relied
> > > on this being available, even for MIT-licensed code.
> > 
> > MIT-licensed code should be just fine with GPL symbols, just use the
> > correct MODULE_LICENSE() setting and all is good.
> 
> Actually, we're still using this license string:
> 
>    MODULE_LICENSE("MIT");
> 
> which I understand does *not* grant access to GPL symbols. So I guess we'd
> have to switch over to "MIT/GPL", if I understand correctly, in order to be
> all correct here.

You need to write this as:
	MODULE_LICENSE("Dual MIT/GPL");
for the linker to handle this properly as that is the string it is
looking for.

thanks,

greg k-h

[toc] | [prev] | [next] | [standalone]


#1595099 — Re: [PATCH 0/1] refcount: restore kref_get and kref_put to non-GPL status

FromJohn Hubbard <jhubbard@nvidia.com>
Date2017-03-08 13:20 +0100
SubjectRe: [PATCH 0/1] refcount: restore kref_get and kref_put to non-GPL status
Message-ID<tiIJs-6r7-11@gated-at.bofh.it>
In reply to#1595022
On 03/08/2017 02:12 AM, Greg Kroah-Hartman wrote:
> On Wed, Mar 08, 2017 at 01:59:33AM -0800, John Hubbard wrote:
>>
>>
>> On 03/08/2017 01:48 AM, Greg Kroah-Hartman wrote:
>>> On Wed, Mar 08, 2017 at 01:25:48AM -0800, john.hubbard@gmail.com wrote:
>>>> From: John Hubbard <jhubbard@nvidia.com>
>>>>
>>>> Hi,
>>>>
>>>> Say, I'm 99% sure that this was just an oversight, so
>>>> I'm sticking my neck out here and floating a patch to
>>>> Put Things Back. I'm hoping that there is not some
>>>> firm reason to GPL-protect the basic kref_get and
>>>> kref_put routines, because when designing some
>>>> recent new (open-source, yay!) device drivers, we relied
>>>> on this being available, even for MIT-licensed code.
>>>
>>> MIT-licensed code should be just fine with GPL symbols, just use the
>>> correct MODULE_LICENSE() setting and all is good.
>>
>> Actually, we're still using this license string:
>>
>>    MODULE_LICENSE("MIT");
>>
>> which I understand does *not* grant access to GPL symbols. So I guess we'd
>> have to switch over to "MIT/GPL", if I understand correctly, in order to be
>> all correct here.
>
> You need to write this as:
> 	MODULE_LICENSE("Dual MIT/GPL");
> for the linker to handle this properly as that is the string it is
> looking for.

Yes, understood. I thought from your previous response that maybe "MIT" alone was 
*intended* to provide access, but this makes sense and matches what I'd thought 
earlier. And of course, your other point (about the header itself being licensed) 
overrides this, but it's nice to get clarification on this detail, as long as I'm 
stuck--for now--on "MIT".

Appreciate your time and quick responses on this, I know it's probably tiresome to 
answer these sorts of questions.

thanks again,
john h


>
> thanks,
>
> greg k-h
>

[toc] | [prev] | [next] | [standalone]


#1595075 — Re: [PATCH 0/1] refcount: restore kref_get and kref_put to non-GPL status

FromJohn Hubbard <jhubbard@nvidia.com>
Date2017-03-08 12:30 +0100
SubjectRe: [PATCH 0/1] refcount: restore kref_get and kref_put to non-GPL status
Message-ID<tiH0Z-5e8-11@gated-at.bofh.it>
In reply to#1595016

On 03/08/2017 01:48 AM, Greg Kroah-Hartman wrote:
> On Wed, Mar 08, 2017 at 01:25:48AM -0800, john.hubbard@gmail.com wrote:
>> From: John Hubbard <jhubbard@nvidia.com>
>>
>> Hi,
>>
>> Say, I'm 99% sure that this was just an oversight, so
>> I'm sticking my neck out here and floating a patch to
>> Put Things Back. I'm hoping that there is not some
>> firm reason to GPL-protect the basic kref_get and
>> kref_put routines, because when designing some
>> recent new (open-source, yay!) device drivers, we relied
>> on this being available, even for MIT-licensed code.
>
> MIT-licensed code should be just fine with GPL symbols, just use the
> correct MODULE_LICENSE() setting and all is good.

Actually, we're still using this license string:

    MODULE_LICENSE("MIT");

which I understand does *not* grant access to GPL symbols. So I guess we'd have to 
switch over to "MIT/GPL", if I understand correctly, in order to be all correct here.

>
> As all of the previous kref functions were in a GPL-only header file,
> and included directly that way, they were already GPL-only symbols, so
> there really was no change here except now the linker checks them.  If
> you have questions about using inline GPL-only functions from a .h file,
> in a non-GPL codebase, please consult your corporate lawyer to get
> clarification.

As much as I do enjoy chatting with those guys, I think I'll pass this time. :)

thanks,
John Hubbard
NVIDIA

>
> thanks,
>
> greg k-h
>

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web