From: Randy Dunlap <rdunlap@infradead.org> Date: 2018-08-28 23:34:15
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 at vger.kernel.org
Cc: linux-security-module at vger.kernel.org
Cc: Mat Martineau <redacted>
Cc: stable at vger.kernel.org
---
include/uapi/linux/keyctl.h | 2 +-
security/keys/dh.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
On Tue, Aug 28, 2018 at 04:34:04PM -0700, Randy Dunlap wrote:
quoted hunk
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 at vger.kernel.org
Cc: linux-security-module at vger.kernel.org
Cc: Mat Martineau <redacted>
Cc: stable at vger.kernel.org
---
include/uapi/linux/keyctl.h | 2 +-
security/keys/dh.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
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
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.
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.
quoted hunk
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 at vger.kernel.org
Cc: linux-security-module at vger.kernel.org
Cc: Mat Martineau <redacted>
Cc: stable at vger.kernel.org
---
include/uapi/linux/keyctl.h | 2 +-
security/keys/dh.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
On Tue, Aug 28, 2018 at 04:34:04PM -0700, Randy Dunlap wrote:
quoted
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?
From: David Howells <dhowells@redhat.com> Date: 2018-09-22 00:03:49
Andrew Morton [off-list ref] 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