linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH resend] uapi/linux/keyctl.h: don't use C++ reserved keyword as a struct member name
@ 2018-08-28 23:34 Randy Dunlap
  2018-08-29  2:42 ` Greg KH
  2018-09-09 22:00 ` Eugene Syromiatnikov
  0 siblings, 2 replies; 6+ messages in thread
From: Randy Dunlap @ 2018-08-28 23:34 UTC (permalink / raw)
  To: LKML
  Cc: David Howells, James Morris, Serge E. Hallyn, keyrings,
	linux-security-module, Mat Martineau, stable, Andrew Morton

From: Randy Dunlap <rdunlap@infradead.org>

Since this header is in "include/uapi/linux/", apparently people
want to use it in userspace programs -- even in C++ ones.
However, the header uses a C++ reserved keyword ("private"),
so change that to "dh_private" instead to allow the header file
to be used in C++ userspace.

Fixes https://bugzilla.kernel.org/show_bug.cgi?id=191051
Fixes: ddbb41148724 ("KEYS: Add KEYCTL_DH_COMPUTE command")

Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Cc: David Howells <dhowells@redhat.com>
Cc: James Morris <jmorris@namei.org>
Cc: "Serge E. Hallyn" <serge@hallyn.com>
Cc: keyrings@vger.kernel.org
Cc: linux-security-module@vger.kernel.org
Cc: Mat Martineau <mathew.j.martineau@linux.intel.com>
Cc: stable@vger.kernel.org
---
 include/uapi/linux/keyctl.h |    2 +-
 security/keys/dh.c          |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

--- lnx-416.orig/include/uapi/linux/keyctl.h
+++ lnx-416/include/uapi/linux/keyctl.h
@@ -65,7 +65,7 @@
 
 /* keyctl structures */
 struct keyctl_dh_params {
-	__s32 private;
+	__s32 dh_private;
 	__s32 prime;
 	__s32 base;
 };
--- lnx-416.orig/security/keys/dh.c
+++ lnx-416/security/keys/dh.c
@@ -307,7 +307,7 @@ long __keyctl_dh_compute(struct keyctl_d
 	}
 	dh_inputs.g_size = dlen;
 
-	dlen = dh_data_from_key(pcopy.private, &dh_inputs.key);
+	dlen = dh_data_from_key(pcopy.dh_private, &dh_inputs.key);
 	if (dlen < 0) {
 		ret = dlen;
 		goto out2;



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH resend] uapi/linux/keyctl.h: don't use C++ reserved keyword as a struct member name
  2018-08-28 23:34 [PATCH resend] uapi/linux/keyctl.h: don't use C++ reserved keyword as a struct member name Randy Dunlap
@ 2018-08-29  2:42 ` Greg KH
  2018-08-29 22:56   ` Andrew Morton
  2018-09-09 22:00 ` Eugene Syromiatnikov
  1 sibling, 1 reply; 6+ messages in thread
From: Greg KH @ 2018-08-29  2:42 UTC (permalink / raw)
  To: Randy Dunlap
  Cc: LKML, David Howells, James Morris, Serge E. Hallyn, keyrings,
	linux-security-module, Mat Martineau, stable, Andrew Morton

On Tue, Aug 28, 2018 at 04:34:04PM -0700, Randy Dunlap wrote:
> From: Randy Dunlap <rdunlap@infradead.org>
> 
> Since this header is in "include/uapi/linux/", apparently people
> want to use it in userspace programs -- even in C++ ones.
> However, the header uses a C++ reserved keyword ("private"),
> so change that to "dh_private" instead to allow the header file
> to be used in C++ userspace.
> 
> Fixes https://bugzilla.kernel.org/show_bug.cgi?id=191051
> Fixes: ddbb41148724 ("KEYS: Add KEYCTL_DH_COMPUTE command")
> 
> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
> Cc: David Howells <dhowells@redhat.com>
> Cc: James Morris <jmorris@namei.org>
> Cc: "Serge E. Hallyn" <serge@hallyn.com>
> Cc: keyrings@vger.kernel.org
> Cc: linux-security-module@vger.kernel.org
> Cc: Mat Martineau <mathew.j.martineau@linux.intel.com>
> Cc: stable@vger.kernel.org
> ---
>  include/uapi/linux/keyctl.h |    2 +-
>  security/keys/dh.c          |    2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> --- lnx-416.orig/include/uapi/linux/keyctl.h
> +++ lnx-416/include/uapi/linux/keyctl.h
> @@ -65,7 +65,7 @@
>  
>  /* keyctl structures */
>  struct keyctl_dh_params {
> -	__s32 private;
> +	__s32 dh_private;

Ick ick ick, why not just put the C "namespace" on all uapi files if you
are including them from c++ code?  I'm sure this isn't the only problem
that has this problem, right?

This is valid C, no need to start worrying about C++ reserved names.

thanks,

greg "'struct class' is your friend" k-h

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH resend] uapi/linux/keyctl.h: don't use C++ reserved keyword as a struct member name
  2018-08-29  2:42 ` Greg KH
@ 2018-08-29 22:56   ` Andrew Morton
  0 siblings, 0 replies; 6+ messages in thread
From: Andrew Morton @ 2018-08-29 22:56 UTC (permalink / raw)
  To: Greg KH
  Cc: Randy Dunlap, LKML, David Howells, James Morris, Serge E. Hallyn,
	keyrings, linux-security-module, Mat Martineau, stable

On Tue, 28 Aug 2018 19:42:24 -0700 Greg KH <gregkh@linuxfoundation.org> wrote:

> > --- lnx-416.orig/include/uapi/linux/keyctl.h
> > +++ lnx-416/include/uapi/linux/keyctl.h
> > @@ -65,7 +65,7 @@
> >  
> >  /* keyctl structures */
> >  struct keyctl_dh_params {
> > -	__s32 private;
> > +	__s32 dh_private;
> 
> Ick ick ick, why not just put the C "namespace" on all uapi files if you
> are including them from c++ code?  I'm sure this isn't the only problem
> that has this problem, right?
> 
> This is valid C, no need to start worrying about C++ reserved names.

We've done this before and it's a simple enough change in order to be
friendly toward others.

That being said, it's been like this for two years so presumably anyone
who is using this header from C++ is already `extern "C" { ...}' around
their #include.

I'm OK with the patch as-is, but if we run into this issue more often,
we might want to look at doing something kernel-wide.

I'm not sure what though. Adding

#ifdef __cplusplus
extern "C" {
#endif

...

#ifdef __cplusplus
}
#endif

into every uapi file might work.  Unpleasing.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH resend] uapi/linux/keyctl.h: don't use C++ reserved keyword as a struct member name
  2018-08-28 23:34 [PATCH resend] uapi/linux/keyctl.h: don't use C++ reserved keyword as a struct member name Randy Dunlap
  2018-08-29  2:42 ` Greg KH
@ 2018-09-09 22:00 ` Eugene Syromiatnikov
  2018-09-10 22:09   ` Andrew Morton
  2018-09-22  0:03   ` David Howells
  1 sibling, 2 replies; 6+ messages in thread
From: Eugene Syromiatnikov @ 2018-09-09 22:00 UTC (permalink / raw)
  To: Randy Dunlap
  Cc: LKML, David Howells, James Morris, Serge E. Hallyn, keyrings,
	linux-security-module, Mat Martineau, stable, Andrew Morton

On Tue, Aug 28, 2018 at 04:34:04PM -0700, Randy Dunlap wrote:
> From: Randy Dunlap <rdunlap@infradead.org>
> 
> Since this header is in "include/uapi/linux/", apparently people
> want to use it in userspace programs -- even in C++ ones.
> However, the header uses a C++ reserved keyword ("private"),
> so change that to "dh_private" instead to allow the header file
> to be used in C++ userspace.

This change breaks all existing C programs that rely on <linux/keyctl.h>
uapi header in order to get struct keyctl_dh_params definition, however.

> 
> Fixes https://bugzilla.kernel.org/show_bug.cgi?id=191051
> Fixes: ddbb41148724 ("KEYS: Add KEYCTL_DH_COMPUTE command")
> 
> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
> Cc: David Howells <dhowells@redhat.com>
> Cc: James Morris <jmorris@namei.org>
> Cc: "Serge E. Hallyn" <serge@hallyn.com>
> Cc: keyrings@vger.kernel.org
> Cc: linux-security-module@vger.kernel.org
> Cc: Mat Martineau <mathew.j.martineau@linux.intel.com>
> Cc: stable@vger.kernel.org
> ---
>  include/uapi/linux/keyctl.h |    2 +-
>  security/keys/dh.c          |    2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> --- lnx-416.orig/include/uapi/linux/keyctl.h
> +++ lnx-416/include/uapi/linux/keyctl.h
> @@ -65,7 +65,7 @@
>  
>  /* keyctl structures */
>  struct keyctl_dh_params {
> -	__s32 private;
> +	__s32 dh_private;

>  	__s32 prime;
>  	__s32 base;
>  };
> --- lnx-416.orig/security/keys/dh.c
> +++ lnx-416/security/keys/dh.c
> @@ -307,7 +307,7 @@ long __keyctl_dh_compute(struct keyctl_d
>  	}
>  	dh_inputs.g_size = dlen;
>  
> -	dlen = dh_data_from_key(pcopy.private, &dh_inputs.key);
> +	dlen = dh_data_from_key(pcopy.dh_private, &dh_inputs.key);
>  	if (dlen < 0) {
>  		ret = dlen;
>  		goto out2;
> 
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH resend] uapi/linux/keyctl.h: don't use C++ reserved keyword as a struct member name
  2018-09-09 22:00 ` Eugene Syromiatnikov
@ 2018-09-10 22:09   ` Andrew Morton
  2018-09-22  0:03   ` David Howells
  1 sibling, 0 replies; 6+ messages in thread
From: Andrew Morton @ 2018-09-10 22:09 UTC (permalink / raw)
  To: Eugene Syromiatnikov
  Cc: Randy Dunlap, LKML, David Howells, James Morris, Serge E. Hallyn,
	keyrings, linux-security-module, Mat Martineau, stable

On Mon, 10 Sep 2018 00:00:18 +0200 Eugene Syromiatnikov <esyr@redhat.com> wrote:

> On Tue, Aug 28, 2018 at 04:34:04PM -0700, Randy Dunlap wrote:
> > From: Randy Dunlap <rdunlap@infradead.org>
> > 
> > Since this header is in "include/uapi/linux/", apparently people
> > want to use it in userspace programs -- even in C++ ones.
> > However, the header uses a C++ reserved keyword ("private"),
> > so change that to "dh_private" instead to allow the header file
> > to be used in C++ userspace.
> 
> This change breaks all existing C programs that rely on <linux/keyctl.h>
> uapi header in order to get struct keyctl_dh_params definition, however.

Are there such programs?  Do they reference the `private' field?

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH resend] uapi/linux/keyctl.h: don't use C++ reserved keyword as a struct member name
  2018-09-09 22:00 ` Eugene Syromiatnikov
  2018-09-10 22:09   ` Andrew Morton
@ 2018-09-22  0:03   ` David Howells
  1 sibling, 0 replies; 6+ messages in thread
From: David Howells @ 2018-09-22  0:03 UTC (permalink / raw)
  To: Andrew Morton
  Cc: dhowells, Eugene Syromiatnikov, Randy Dunlap, LKML, James Morris,
	Serge E. Hallyn, keyrings, linux-security-module, Mat Martineau,
	stable

Andrew Morton <akpm@linux-foundation.org> wrote:

> Are there such programs?  Do they reference the `private' field?

They would use the keyutils.h header from keyutils package probably.  There
the field was named "priv" not "private".  The kernel's UAPI header should be
amended again to match that.

David

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-09-22  0:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-28 23:34 [PATCH resend] uapi/linux/keyctl.h: don't use C++ reserved keyword as a struct member name Randy Dunlap
2018-08-29  2:42 ` Greg KH
2018-08-29 22:56   ` Andrew Morton
2018-09-09 22:00 ` Eugene Syromiatnikov
2018-09-10 22:09   ` Andrew Morton
2018-09-22  0:03   ` David Howells

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).