From: Kees Cook <keescook@chromium.org>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Daniel Borkmann <daniel@iogearbox.net>,
"Gustavo A. R. Silva" <gustavoars@kernel.org>,
linux-kernel@vger.kernel.org, x86@kernel.org,
dm-devel@redhat.com, linux-m68k@lists.linux-m68k.org,
linux-mips@vger.kernel.org, linux-s390@vger.kernel.org,
kvm@vger.kernel.org, intel-gfx@lists.freedesktop.org,
dri-devel@lists.freedesktop.org, netdev@vger.kernel.org,
bpf@vger.kernel.org, linux-btrfs@vger.kernel.org,
linux-can@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux1394-devel@lists.sourceforge.net, io-uring@vger.kernel.org,
lvs-devel@vger.kernel.org, linux-mtd@lists.infradead.org,
kasan-dev@googlegroups.com, linux-mmc@vger.kernel.org,
nvdimm@lists.linux.dev, netfilter-devel@vger.kernel.org,
coreteam@netfilter.org, linux-perf-users@vger.kernel.org,
linux-raid@vger.kernel.org, linux-sctp@vger.kernel.org,
linux-stm32@st-md-mailman.stormreply.com,
linux-arm-kernel@lists.infradead.org, linux-scsi@vger.kernel.org,
target-devel@vger.kernel.org, linux-usb@vger.kernel.org,
virtualization@lists.linux-foundation.org,
v9fs-developer@lists.sourceforge.net, linux-rdma@vger.kernel.org,
alsa-devel@alsa-project.org, linux-hardening@vger.kernel.org
Subject: Re: [PATCH][next] treewide: uapi: Replace zero-length arrays with flexible-array members
Date: Tue, 28 Jun 2022 10:54:58 -0700 [thread overview]
Message-ID: <202206281009.4332AA33@keescook> (raw)
In-Reply-To: <20220628004052.GM23621@ziepe.ca>
On Mon, Jun 27, 2022 at 09:40:52PM -0300, Jason Gunthorpe wrote:
> On Mon, Jun 27, 2022 at 08:27:37PM +0200, Daniel Borkmann wrote:
> > [...]
> > Fyi, this breaks BPF CI:
> >
> > https://github.com/kernel-patches/bpf/runs/7078719372?check_suite_focus=true
> >
> > [...]
> > progs/map_ptr_kern.c:314:26: error: field 'trie_key' with variable sized type 'struct bpf_lpm_trie_key' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> > struct bpf_lpm_trie_key trie_key;
> > ^
The issue here seems to be a collision between "unknown array size"
and known sizes:
struct bpf_lpm_trie_key {
__u32 prefixlen; /* up to 32 for AF_INET, 128 for AF_INET6 */
__u8 data[0]; /* Arbitrary size */
};
struct lpm_key {
struct bpf_lpm_trie_key trie_key;
__u32 data;
};
This is treating trie_key as a header, which it's not: it's a complete
structure. :)
Perhaps:
struct lpm_key {
__u32 prefixlen;
__u32 data;
};
I don't see anything else trying to include bpf_lpm_trie_key.
>
> This will break the rdma-core userspace as well, with a similar
> error:
>
> /usr/bin/clang-13 -DVERBS_DEBUG -Dibverbs_EXPORTS -Iinclude -I/usr/include/libnl3 -I/usr/include/drm -g -O2 -fdebug-prefix-map=/__w/1/s=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wmissing-prototypes -Wmissing-declarations -Wwrite-strings -Wformat=2 -Wcast-function-type -Wformat-nonliteral -Wdate-time -Wnested-externs -Wshadow -Wstrict-prototypes -Wold-style-definition -Werror -Wredundant-decls -g -fPIC -std=gnu11 -MD -MT libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o -MF libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o.d -o libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o -c ../libibverbs/cmd_flow.c
> In file included from ../libibverbs/cmd_flow.c:33:
> In file included from include/infiniband/cmd_write.h:36:
> In file included from include/infiniband/cmd_ioctl.h:41:
> In file included from include/infiniband/verbs.h:48:
> In file included from include/infiniband/verbs_api.h:66:
> In file included from include/infiniband/ib_user_ioctl_verbs.h:38:
> include/rdma/ib_user_verbs.h:436:34: error: field 'base' with variable sized type 'struct ib_uverbs_create_cq_resp' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> struct ib_uverbs_create_cq_resp base;
> ^
> include/rdma/ib_user_verbs.h:644:34: error: field 'base' with variable sized type 'struct ib_uverbs_create_qp_resp' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> struct ib_uverbs_create_qp_resp base;
This looks very similar, a struct of unknown size is being treated as a
header struct:
struct ib_uverbs_create_cq_resp {
__u32 cq_handle;
__u32 cqe;
__aligned_u64 driver_data[0];
};
struct ib_uverbs_ex_create_cq_resp {
struct ib_uverbs_create_cq_resp base;
__u32 comp_mask;
__u32 response_length;
};
And it only gets used here:
DECLARE_UVERBS_WRITE(IB_USER_VERBS_CMD_CREATE_CQ,
ib_uverbs_create_cq,
UAPI_DEF_WRITE_UDATA_IO(
struct ib_uverbs_create_cq,
struct ib_uverbs_create_cq_resp),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UAPI_DEF_METHOD_NEEDS_FN(create_cq)),
which must also be assuming it's a header. So probably better to just
drop the driver_data field? I don't see anything using it (that I can
find) besides as a sanity-check that the field exists and is at the end
of the struct.
--
Kees Cook
WARNING: multiple messages have this Message-ID (diff)
From: Kees Cook <keescook@chromium.org>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: nvdimm@lists.linux.dev, alsa-devel@alsa-project.org,
kvm@vger.kernel.org, dri-devel@lists.freedesktop.org,
"Gustavo A. R. Silva" <gustavoars@kernel.org>,
dm-devel@redhat.com, target-devel@vger.kernel.org,
linux-mtd@lists.infradead.org, linux-hardening@vger.kernel.org,
linux1394-devel@lists.sourceforge.net,
linux-stm32@st-md-mailman.stormreply.com,
linux-s390@vger.kernel.org,
Daniel Borkmann <daniel@iogearbox.net>,
linux-rdma@vger.kernel.org, x86@kernel.org,
kasan-dev@googlegroups.com, lvs-devel@vger.kernel.org,
coreteam@netfilter.org, v9fs-developer@lists.sourceforge.net,
linux-mips@vger.kernel.org, intel-gfx@lists.freedesktop.org,
linux-can@vger.kernel.org, linux-raid@vger.kernel.org,
linux-m68k@lists.linux-m68k.org,
virtualization@lists.linux-foundation.org,
io-uring@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-scsi@vger.kernel.org, netdev@vger.kernel.org,
linux-usb@vger.kernel.org, linux-mmc@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
linux-sctp@vger.kernel.org, netfilter-devel@vger.kernel.org,
linux-fsdevel@vger.kernel.org, bpf@vger.kernel.org,
linux-btrfs@vger.kernel.org
Subject: Re: [dm-devel] [PATCH][next] treewide: uapi: Replace zero-length arrays with flexible-array members
Date: Tue, 28 Jun 2022 10:54:58 -0700 [thread overview]
Message-ID: <202206281009.4332AA33@keescook> (raw)
In-Reply-To: <20220628004052.GM23621@ziepe.ca>
On Mon, Jun 27, 2022 at 09:40:52PM -0300, Jason Gunthorpe wrote:
> On Mon, Jun 27, 2022 at 08:27:37PM +0200, Daniel Borkmann wrote:
> > [...]
> > Fyi, this breaks BPF CI:
> >
> > https://github.com/kernel-patches/bpf/runs/7078719372?check_suite_focus=true
> >
> > [...]
> > progs/map_ptr_kern.c:314:26: error: field 'trie_key' with variable sized type 'struct bpf_lpm_trie_key' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> > struct bpf_lpm_trie_key trie_key;
> > ^
The issue here seems to be a collision between "unknown array size"
and known sizes:
struct bpf_lpm_trie_key {
__u32 prefixlen; /* up to 32 for AF_INET, 128 for AF_INET6 */
__u8 data[0]; /* Arbitrary size */
};
struct lpm_key {
struct bpf_lpm_trie_key trie_key;
__u32 data;
};
This is treating trie_key as a header, which it's not: it's a complete
structure. :)
Perhaps:
struct lpm_key {
__u32 prefixlen;
__u32 data;
};
I don't see anything else trying to include bpf_lpm_trie_key.
>
> This will break the rdma-core userspace as well, with a similar
> error:
>
> /usr/bin/clang-13 -DVERBS_DEBUG -Dibverbs_EXPORTS -Iinclude -I/usr/include/libnl3 -I/usr/include/drm -g -O2 -fdebug-prefix-map=/__w/1/s=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wmissing-prototypes -Wmissing-declarations -Wwrite-strings -Wformat=2 -Wcast-function-type -Wformat-nonliteral -Wdate-time -Wnested-externs -Wshadow -Wstrict-prototypes -Wold-style-definition -Werror -Wredundant-decls -g -fPIC -std=gnu11 -MD -MT libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o -MF libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o.d -o libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o -c ../libibverbs/cmd_flow.c
> In file included from ../libibverbs/cmd_flow.c:33:
> In file included from include/infiniband/cmd_write.h:36:
> In file included from include/infiniband/cmd_ioctl.h:41:
> In file included from include/infiniband/verbs.h:48:
> In file included from include/infiniband/verbs_api.h:66:
> In file included from include/infiniband/ib_user_ioctl_verbs.h:38:
> include/rdma/ib_user_verbs.h:436:34: error: field 'base' with variable sized type 'struct ib_uverbs_create_cq_resp' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> struct ib_uverbs_create_cq_resp base;
> ^
> include/rdma/ib_user_verbs.h:644:34: error: field 'base' with variable sized type 'struct ib_uverbs_create_qp_resp' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> struct ib_uverbs_create_qp_resp base;
This looks very similar, a struct of unknown size is being treated as a
header struct:
struct ib_uverbs_create_cq_resp {
__u32 cq_handle;
__u32 cqe;
__aligned_u64 driver_data[0];
};
struct ib_uverbs_ex_create_cq_resp {
struct ib_uverbs_create_cq_resp base;
__u32 comp_mask;
__u32 response_length;
};
And it only gets used here:
DECLARE_UVERBS_WRITE(IB_USER_VERBS_CMD_CREATE_CQ,
ib_uverbs_create_cq,
UAPI_DEF_WRITE_UDATA_IO(
struct ib_uverbs_create_cq,
struct ib_uverbs_create_cq_resp),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UAPI_DEF_METHOD_NEEDS_FN(create_cq)),
which must also be assuming it's a header. So probably better to just
drop the driver_data field? I don't see anything using it (that I can
find) besides as a sanity-check that the field exists and is at the end
of the struct.
--
Kees Cook
--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel
WARNING: multiple messages have this Message-ID (diff)
From: Kees Cook <keescook@chromium.org>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: nvdimm@lists.linux.dev, alsa-devel@alsa-project.org,
kvm@vger.kernel.org, dri-devel@lists.freedesktop.org,
"Gustavo A. R. Silva" <gustavoars@kernel.org>,
dm-devel@redhat.com, target-devel@vger.kernel.org,
linux-mtd@lists.infradead.org, linux-hardening@vger.kernel.org,
linux1394-devel@lists.sourceforge.net,
linux-stm32@st-md-mailman.stormreply.com,
linux-s390@vger.kernel.org,
Daniel Borkmann <daniel@iogearbox.net>,
linux-rdma@vger.kernel.org, x86@kernel.org,
kasan-dev@googlegroups.com, lvs-devel@vger.kernel.org,
coreteam@netfilter.org, v9fs-developer@lists.sourceforge.net,
linux-mips@vger.kernel.org, intel-gfx@lists.freedesktop.org,
linux-can@vger.kernel.org, linux-raid@vger.kernel.org,
linux-m68k@lists.linux-m68k.org,
virtualization@lists.linux-foundation.org,
io-uring@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-scsi@vger.kernel.org, netdev@vger.kernel.org,
linux-usb@vger.kernel.org, linux-mmc@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
linux-sctp@vger.kernel.org, netfilter-devel@vger.kernel.org,
linux-fsdevel@vger.kernel.org, bpf@vger.kernel.org,
linux-btrfs@vger.kernel.org
Subject: Re: [Intel-gfx] [PATCH][next] treewide: uapi: Replace zero-length arrays with flexible-array members
Date: Tue, 28 Jun 2022 10:54:58 -0700 [thread overview]
Message-ID: <202206281009.4332AA33@keescook> (raw)
In-Reply-To: <20220628004052.GM23621@ziepe.ca>
On Mon, Jun 27, 2022 at 09:40:52PM -0300, Jason Gunthorpe wrote:
> On Mon, Jun 27, 2022 at 08:27:37PM +0200, Daniel Borkmann wrote:
> > [...]
> > Fyi, this breaks BPF CI:
> >
> > https://github.com/kernel-patches/bpf/runs/7078719372?check_suite_focus=true
> >
> > [...]
> > progs/map_ptr_kern.c:314:26: error: field 'trie_key' with variable sized type 'struct bpf_lpm_trie_key' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> > struct bpf_lpm_trie_key trie_key;
> > ^
The issue here seems to be a collision between "unknown array size"
and known sizes:
struct bpf_lpm_trie_key {
__u32 prefixlen; /* up to 32 for AF_INET, 128 for AF_INET6 */
__u8 data[0]; /* Arbitrary size */
};
struct lpm_key {
struct bpf_lpm_trie_key trie_key;
__u32 data;
};
This is treating trie_key as a header, which it's not: it's a complete
structure. :)
Perhaps:
struct lpm_key {
__u32 prefixlen;
__u32 data;
};
I don't see anything else trying to include bpf_lpm_trie_key.
>
> This will break the rdma-core userspace as well, with a similar
> error:
>
> /usr/bin/clang-13 -DVERBS_DEBUG -Dibverbs_EXPORTS -Iinclude -I/usr/include/libnl3 -I/usr/include/drm -g -O2 -fdebug-prefix-map=/__w/1/s=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wmissing-prototypes -Wmissing-declarations -Wwrite-strings -Wformat=2 -Wcast-function-type -Wformat-nonliteral -Wdate-time -Wnested-externs -Wshadow -Wstrict-prototypes -Wold-style-definition -Werror -Wredundant-decls -g -fPIC -std=gnu11 -MD -MT libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o -MF libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o.d -o libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o -c ../libibverbs/cmd_flow.c
> In file included from ../libibverbs/cmd_flow.c:33:
> In file included from include/infiniband/cmd_write.h:36:
> In file included from include/infiniband/cmd_ioctl.h:41:
> In file included from include/infiniband/verbs.h:48:
> In file included from include/infiniband/verbs_api.h:66:
> In file included from include/infiniband/ib_user_ioctl_verbs.h:38:
> include/rdma/ib_user_verbs.h:436:34: error: field 'base' with variable sized type 'struct ib_uverbs_create_cq_resp' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> struct ib_uverbs_create_cq_resp base;
> ^
> include/rdma/ib_user_verbs.h:644:34: error: field 'base' with variable sized type 'struct ib_uverbs_create_qp_resp' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> struct ib_uverbs_create_qp_resp base;
This looks very similar, a struct of unknown size is being treated as a
header struct:
struct ib_uverbs_create_cq_resp {
__u32 cq_handle;
__u32 cqe;
__aligned_u64 driver_data[0];
};
struct ib_uverbs_ex_create_cq_resp {
struct ib_uverbs_create_cq_resp base;
__u32 comp_mask;
__u32 response_length;
};
And it only gets used here:
DECLARE_UVERBS_WRITE(IB_USER_VERBS_CMD_CREATE_CQ,
ib_uverbs_create_cq,
UAPI_DEF_WRITE_UDATA_IO(
struct ib_uverbs_create_cq,
struct ib_uverbs_create_cq_resp),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UAPI_DEF_METHOD_NEEDS_FN(create_cq)),
which must also be assuming it's a header. So probably better to just
drop the driver_data field? I don't see anything using it (that I can
find) besides as a sanity-check that the field exists and is at the end
of the struct.
--
Kees Cook
WARNING: multiple messages have this Message-ID (diff)
From: Kees Cook <keescook@chromium.org>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Daniel Borkmann <daniel@iogearbox.net>,
"Gustavo A. R. Silva" <gustavoars@kernel.org>,
linux-kernel@vger.kernel.org, x86@kernel.org,
dm-devel@redhat.com, linux-m68k@lists.linux-m68k.org,
linux-mips@vger.kernel.org, linux-s390@vger.kernel.org,
kvm@vger.kernel.org, intel-gfx@lists.freedesktop.org,
dri-devel@lists.freedesktop.org, netdev@vger.kernel.org,
bpf@vger.kernel.org, linux-btrfs@vger.kernel.org,
linux-can@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux1394-devel@lists.sourceforge.net, io-uring@vger.kernel.org,
lvs-devel@vger.kernel.org, linux-mtd@lists.infradead.org,
kasan-dev@googlegroups.com, linux-mmc@vger.kernel.org,
nvdimm@lists.linux.dev, netfilter-devel@vger.kernel.org,
coreteam@netfilter.org, linux-perf-users@vger.kernel.org,
linux-raid@vger.kernel.org, linux-sctp@vger.kernel.org,
linux-stm32@st-md-mailman.stormreply.com,
linux-arm-kernel@lists.infradead.org, linux-scsi@vger.kernel.org,
target-devel@vger.kernel.org, linux-usb@vger.kernel.org,
virtualization@lists.linux-foundation.org,
v9fs-developer@lists.sourceforge.net, linux-rdma@vger.kernel.org,
alsa-devel@alsa-project.org, linux-hardening@vger.kernel.org
Subject: Re: [PATCH][next] treewide: uapi: Replace zero-length arrays with flexible-array members
Date: Tue, 28 Jun 2022 10:54:58 -0700 [thread overview]
Message-ID: <202206281009.4332AA33@keescook> (raw)
In-Reply-To: <20220628004052.GM23621@ziepe.ca>
On Mon, Jun 27, 2022 at 09:40:52PM -0300, Jason Gunthorpe wrote:
> On Mon, Jun 27, 2022 at 08:27:37PM +0200, Daniel Borkmann wrote:
> > [...]
> > Fyi, this breaks BPF CI:
> >
> > https://github.com/kernel-patches/bpf/runs/7078719372?check_suite_focus=true
> >
> > [...]
> > progs/map_ptr_kern.c:314:26: error: field 'trie_key' with variable sized type 'struct bpf_lpm_trie_key' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> > struct bpf_lpm_trie_key trie_key;
> > ^
The issue here seems to be a collision between "unknown array size"
and known sizes:
struct bpf_lpm_trie_key {
__u32 prefixlen; /* up to 32 for AF_INET, 128 for AF_INET6 */
__u8 data[0]; /* Arbitrary size */
};
struct lpm_key {
struct bpf_lpm_trie_key trie_key;
__u32 data;
};
This is treating trie_key as a header, which it's not: it's a complete
structure. :)
Perhaps:
struct lpm_key {
__u32 prefixlen;
__u32 data;
};
I don't see anything else trying to include bpf_lpm_trie_key.
>
> This will break the rdma-core userspace as well, with a similar
> error:
>
> /usr/bin/clang-13 -DVERBS_DEBUG -Dibverbs_EXPORTS -Iinclude -I/usr/include/libnl3 -I/usr/include/drm -g -O2 -fdebug-prefix-map=/__w/1/s=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wmissing-prototypes -Wmissing-declarations -Wwrite-strings -Wformat=2 -Wcast-function-type -Wformat-nonliteral -Wdate-time -Wnested-externs -Wshadow -Wstrict-prototypes -Wold-style-definition -Werror -Wredundant-decls -g -fPIC -std=gnu11 -MD -MT libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o -MF libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o.d -o libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o -c ../libibverbs/cmd_flow.c
> In file included from ../libibverbs/cmd_flow.c:33:
> In file included from include/infiniband/cmd_write.h:36:
> In file included from include/infiniband/cmd_ioctl.h:41:
> In file included from include/infiniband/verbs.h:48:
> In file included from include/infiniband/verbs_api.h:66:
> In file included from include/infiniband/ib_user_ioctl_verbs.h:38:
> include/rdma/ib_user_verbs.h:436:34: error: field 'base' with variable sized type 'struct ib_uverbs_create_cq_resp' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> struct ib_uverbs_create_cq_resp base;
> ^
> include/rdma/ib_user_verbs.h:644:34: error: field 'base' with variable sized type 'struct ib_uverbs_create_qp_resp' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> struct ib_uverbs_create_qp_resp base;
This looks very similar, a struct of unknown size is being treated as a
header struct:
struct ib_uverbs_create_cq_resp {
__u32 cq_handle;
__u32 cqe;
__aligned_u64 driver_data[0];
};
struct ib_uverbs_ex_create_cq_resp {
struct ib_uverbs_create_cq_resp base;
__u32 comp_mask;
__u32 response_length;
};
And it only gets used here:
DECLARE_UVERBS_WRITE(IB_USER_VERBS_CMD_CREATE_CQ,
ib_uverbs_create_cq,
UAPI_DEF_WRITE_UDATA_IO(
struct ib_uverbs_create_cq,
struct ib_uverbs_create_cq_resp),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UAPI_DEF_METHOD_NEEDS_FN(create_cq)),
which must also be assuming it's a header. So probably better to just
drop the driver_data field? I don't see anything using it (that I can
find) besides as a sanity-check that the field exists and is at the end
of the struct.
--
Kees Cook
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
WARNING: multiple messages have this Message-ID (diff)
From: Kees Cook <keescook@chromium.org>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: nvdimm@lists.linux.dev, alsa-devel@alsa-project.org,
kvm@vger.kernel.org, dri-devel@lists.freedesktop.org,
"Gustavo A. R. Silva" <gustavoars@kernel.org>,
dm-devel@redhat.com, target-devel@vger.kernel.org,
linux-mtd@lists.infradead.org, linux-hardening@vger.kernel.org,
linux1394-devel@lists.sourceforge.net,
linux-stm32@st-md-mailman.stormreply.com,
linux-s390@vger.kernel.org,
Daniel Borkmann <daniel@iogearbox.net>,
linux-rdma@vger.kernel.org, x86@kernel.org,
kasan-dev@googlegroups.com, lvs-devel@vger.kernel.org,
coreteam@netfilter.org, v9fs-developer@lists.sourceforge.net,
linux-mips@vger.kernel.org, intel-gfx@lists.freedesktop.org,
linux-can@vger.kernel.org, linux-raid@vger.kernel.org,
linux-m68k@lists.linux-m68k.org,
virtualization@lists.linux-foundation.org,
io-uring@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-scsi@vger.kernel.org, netdev@vger.kernel.o
Subject: Re: [PATCH][next] treewide: uapi: Replace zero-length arrays with flexible-array members
Date: Tue, 28 Jun 2022 10:54:58 -0700 [thread overview]
Message-ID: <202206281009.4332AA33@keescook> (raw)
In-Reply-To: <20220628004052.GM23621@ziepe.ca>
On Mon, Jun 27, 2022 at 09:40:52PM -0300, Jason Gunthorpe wrote:
> On Mon, Jun 27, 2022 at 08:27:37PM +0200, Daniel Borkmann wrote:
> > [...]
> > Fyi, this breaks BPF CI:
> >
> > https://github.com/kernel-patches/bpf/runs/7078719372?check_suite_focus=true
> >
> > [...]
> > progs/map_ptr_kern.c:314:26: error: field 'trie_key' with variable sized type 'struct bpf_lpm_trie_key' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> > struct bpf_lpm_trie_key trie_key;
> > ^
The issue here seems to be a collision between "unknown array size"
and known sizes:
struct bpf_lpm_trie_key {
__u32 prefixlen; /* up to 32 for AF_INET, 128 for AF_INET6 */
__u8 data[0]; /* Arbitrary size */
};
struct lpm_key {
struct bpf_lpm_trie_key trie_key;
__u32 data;
};
This is treating trie_key as a header, which it's not: it's a complete
structure. :)
Perhaps:
struct lpm_key {
__u32 prefixlen;
__u32 data;
};
I don't see anything else trying to include bpf_lpm_trie_key.
>
> This will break the rdma-core userspace as well, with a similar
> error:
>
> /usr/bin/clang-13 -DVERBS_DEBUG -Dibverbs_EXPORTS -Iinclude -I/usr/include/libnl3 -I/usr/include/drm -g -O2 -fdebug-prefix-map=/__w/1/s=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wmissing-prototypes -Wmissing-declarations -Wwrite-strings -Wformat=2 -Wcast-function-type -Wformat-nonliteral -Wdate-time -Wnested-externs -Wshadow -Wstrict-prototypes -Wold-style-definition -Werror -Wredundant-decls -g -fPIC -std=gnu11 -MD -MT libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o -MF libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o.d -o libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o -c ../libibverbs/cmd_flow.c
> In file included from ../libibverbs/cmd_flow.c:33:
> In file included from include/infiniband/cmd_write.h:36:
> In file included from include/infiniband/cmd_ioctl.h:41:
> In file included from include/infiniband/verbs.h:48:
> In file included from include/infiniband/verbs_api.h:66:
> In file included from include/infiniband/ib_user_ioctl_verbs.h:38:
> include/rdma/ib_user_verbs.h:436:34: error: field 'base' with variable sized type 'struct ib_uverbs_create_cq_resp' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> struct ib_uverbs_create_cq_resp base;
> ^
> include/rdma/ib_user_verbs.h:644:34: error: field 'base' with variable sized type 'struct ib_uverbs_create_qp_resp' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> struct ib_uverbs_create_qp_resp base;
This looks very similar, a struct of unknown size is being treated as a
header struct:
struct ib_uverbs_create_cq_resp {
__u32 cq_handle;
__u32 cqe;
__aligned_u64 driver_data[0];
};
struct ib_uverbs_ex_create_cq_resp {
struct ib_uverbs_create_cq_resp base;
__u32 comp_mask;
__u32 response_length;
};
And it only gets used here:
DECLARE_UVERBS_WRITE(IB_USER_VERBS_CMD_CREATE_CQ,
ib_uverbs_create_cq,
UAPI_DEF_WRITE_UDATA_IO(
struct ib_uverbs_create_cq,
struct ib_uverbs_create_cq_resp),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UAPI_DEF_METHOD_NEEDS_FN(create_cq)),
which must also be assuming it's a header. So probably better to just
drop the driver_data field? I don't see anything using it (that I can
find) besides as a sanity-check that the field exists and is at the end
of the struct.
--
Kees Cook
WARNING: multiple messages have this Message-ID (diff)
From: Kees Cook <keescook@chromium.org>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: nvdimm@lists.linux.dev, alsa-devel@alsa-project.org,
kvm@vger.kernel.org, dri-devel@lists.freedesktop.org,
"Gustavo A. R. Silva" <gustavoars@kernel.org>,
dm-devel@redhat.com, target-devel@vger.kernel.org,
linux-mtd@lists.infradead.org, linux-hardening@vger.kernel.org,
linux1394-devel@lists.sourceforge.net,
linux-stm32@st-md-mailman.stormreply.com,
linux-s390@vger.kernel.org,
Daniel Borkmann <daniel@iogearbox.net>,
linux-rdma@vger.kernel.org, x86@kernel.org,
kasan-dev@googlegroups.com, lvs-devel@vger.kernel.org,
coreteam@netfilter.org, v9fs-developer@lists.sourceforge.net,
linux-mips@vger.kernel.org, intel-gfx@lists.freedesktop.org,
linux-can@vger.kernel.org, linux-raid@vger.kernel.org,
linux-m68k@lists.linux-m68k.org,
virtualization@lists.linux-foundation.org,
io-uring@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-scsi@vger.kernel.org, netdev@vger.kernel.org,
linux-usb@vger.kernel.org, linux-mmc@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
linux-sctp@vger.kernel.org, netfilter-devel@vger.kernel.org,
linux-fsdevel@vger.kernel.org, bpf@vger.kernel.org,
linux-btrfs@vger.kernel.org
Subject: Re: [PATCH][next] treewide: uapi: Replace zero-length arrays with flexible-array members
Date: Tue, 28 Jun 2022 10:54:58 -0700 [thread overview]
Message-ID: <202206281009.4332AA33@keescook> (raw)
In-Reply-To: <20220628004052.GM23621@ziepe.ca>
On Mon, Jun 27, 2022 at 09:40:52PM -0300, Jason Gunthorpe wrote:
> On Mon, Jun 27, 2022 at 08:27:37PM +0200, Daniel Borkmann wrote:
> > [...]
> > Fyi, this breaks BPF CI:
> >
> > https://github.com/kernel-patches/bpf/runs/7078719372?check_suite_focus=true
> >
> > [...]
> > progs/map_ptr_kern.c:314:26: error: field 'trie_key' with variable sized type 'struct bpf_lpm_trie_key' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> > struct bpf_lpm_trie_key trie_key;
> > ^
The issue here seems to be a collision between "unknown array size"
and known sizes:
struct bpf_lpm_trie_key {
__u32 prefixlen; /* up to 32 for AF_INET, 128 for AF_INET6 */
__u8 data[0]; /* Arbitrary size */
};
struct lpm_key {
struct bpf_lpm_trie_key trie_key;
__u32 data;
};
This is treating trie_key as a header, which it's not: it's a complete
structure. :)
Perhaps:
struct lpm_key {
__u32 prefixlen;
__u32 data;
};
I don't see anything else trying to include bpf_lpm_trie_key.
>
> This will break the rdma-core userspace as well, with a similar
> error:
>
> /usr/bin/clang-13 -DVERBS_DEBUG -Dibverbs_EXPORTS -Iinclude -I/usr/include/libnl3 -I/usr/include/drm -g -O2 -fdebug-prefix-map=/__w/1/s=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wmissing-prototypes -Wmissing-declarations -Wwrite-strings -Wformat=2 -Wcast-function-type -Wformat-nonliteral -Wdate-time -Wnested-externs -Wshadow -Wstrict-prototypes -Wold-style-definition -Werror -Wredundant-decls -g -fPIC -std=gnu11 -MD -MT libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o -MF libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o.d -o libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o -c ../libibverbs/cmd_flow.c
> In file included from ../libibverbs/cmd_flow.c:33:
> In file included from include/infiniband/cmd_write.h:36:
> In file included from include/infiniband/cmd_ioctl.h:41:
> In file included from include/infiniband/verbs.h:48:
> In file included from include/infiniband/verbs_api.h:66:
> In file included from include/infiniband/ib_user_ioctl_verbs.h:38:
> include/rdma/ib_user_verbs.h:436:34: error: field 'base' with variable sized type 'struct ib_uverbs_create_cq_resp' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> struct ib_uverbs_create_cq_resp base;
> ^
> include/rdma/ib_user_verbs.h:644:34: error: field 'base' with variable sized type 'struct ib_uverbs_create_qp_resp' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> struct ib_uverbs_create_qp_resp base;
This looks very similar, a struct of unknown size is being treated as a
header struct:
struct ib_uverbs_create_cq_resp {
__u32 cq_handle;
__u32 cqe;
__aligned_u64 driver_data[0];
};
struct ib_uverbs_ex_create_cq_resp {
struct ib_uverbs_create_cq_resp base;
__u32 comp_mask;
__u32 response_length;
};
And it only gets used here:
DECLARE_UVERBS_WRITE(IB_USER_VERBS_CMD_CREATE_CQ,
ib_uverbs_create_cq,
UAPI_DEF_WRITE_UDATA_IO(
struct ib_uverbs_create_cq,
struct ib_uverbs_create_cq_resp),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UAPI_DEF_METHOD_NEEDS_FN(create_cq)),
which must also be assuming it's a header. So probably better to just
drop the driver_data field? I don't see anything using it (that I can
find) besides as a sanity-check that the field exists and is at the end
of the struct.
--
Kees Cook
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
WARNING: multiple messages have this Message-ID (diff)
From: Kees Cook <keescook@chromium.org>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Daniel Borkmann <daniel@iogearbox.net>,
"Gustavo A. R. Silva" <gustavoars@kernel.org>,
linux-kernel@vger.kernel.org, x86@kernel.org,
dm-devel@redhat.com, linux-m68k@lists.linux-m68k.org,
linux-mips@vger.kernel.org, linux-s390@vger.kernel.org,
kvm@vger.kernel.org, intel-gfx@lists.freedesktop.org,
dri-devel@lists.freedesktop.org, netdev@vger.kernel.org,
bpf@vger.kernel.org, linux-btrfs@vger.kernel.org,
linux-can@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux1394-devel@lists.sourceforge.net, io-uring@vger.kernel.org,
lvs-devel@vger.kernel.org, linux-mtd@lists.infradead.org,
kasan-dev@googlegroups.com, linux-mmc@vger.kernel.org,
nvdimm@lists.linux.dev, netfilter-devel@vger.kernel.org,
coreteam@netfilter.org, linux-perf-users@vger.kernel.org,
linux-raid@vger.kernel.org, linux-sctp@vger.kernel.org,
linux-stm32@st-md-mailman.stormreply.com,
linux-arm-kernel@lists.infradead.org, linux-scsi@vger.kernel.org,
target-devel@vger.kernel.org, linux-usb@vger.kernel.org,
virtualization@lists.linux-foundation.org,
v9fs-developer@lists.sourceforge.net, linux-rdma@vger.kernel.org,
alsa-devel@alsa-project.org, linux-hardening@vger.kernel.org
Subject: Re: [PATCH][next] treewide: uapi: Replace zero-length arrays with flexible-array members
Date: Tue, 28 Jun 2022 10:54:58 -0700 [thread overview]
Message-ID: <202206281009.4332AA33@keescook> (raw)
In-Reply-To: <20220628004052.GM23621@ziepe.ca>
On Mon, Jun 27, 2022 at 09:40:52PM -0300, Jason Gunthorpe wrote:
> On Mon, Jun 27, 2022 at 08:27:37PM +0200, Daniel Borkmann wrote:
> > [...]
> > Fyi, this breaks BPF CI:
> >
> > https://github.com/kernel-patches/bpf/runs/7078719372?check_suite_focus=true
> >
> > [...]
> > progs/map_ptr_kern.c:314:26: error: field 'trie_key' with variable sized type 'struct bpf_lpm_trie_key' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> > struct bpf_lpm_trie_key trie_key;
> > ^
The issue here seems to be a collision between "unknown array size"
and known sizes:
struct bpf_lpm_trie_key {
__u32 prefixlen; /* up to 32 for AF_INET, 128 for AF_INET6 */
__u8 data[0]; /* Arbitrary size */
};
struct lpm_key {
struct bpf_lpm_trie_key trie_key;
__u32 data;
};
This is treating trie_key as a header, which it's not: it's a complete
structure. :)
Perhaps:
struct lpm_key {
__u32 prefixlen;
__u32 data;
};
I don't see anything else trying to include bpf_lpm_trie_key.
>
> This will break the rdma-core userspace as well, with a similar
> error:
>
> /usr/bin/clang-13 -DVERBS_DEBUG -Dibverbs_EXPORTS -Iinclude -I/usr/include/libnl3 -I/usr/include/drm -g -O2 -fdebug-prefix-map=/__w/1/s=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wmissing-prototypes -Wmissing-declarations -Wwrite-strings -Wformat=2 -Wcast-function-type -Wformat-nonliteral -Wdate-time -Wnested-externs -Wshadow -Wstrict-prototypes -Wold-style-definition -Werror -Wredundant-decls -g -fPIC -std=gnu11 -MD -MT libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o -MF libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o.d -o libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o -c ../libibverbs/cmd_flow.c
> In file included from ../libibverbs/cmd_flow.c:33:
> In file included from include/infiniband/cmd_write.h:36:
> In file included from include/infiniband/cmd_ioctl.h:41:
> In file included from include/infiniband/verbs.h:48:
> In file included from include/infiniband/verbs_api.h:66:
> In file included from include/infiniband/ib_user_ioctl_verbs.h:38:
> include/rdma/ib_user_verbs.h:436:34: error: field 'base' with variable sized type 'struct ib_uverbs_create_cq_resp' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> struct ib_uverbs_create_cq_resp base;
> ^
> include/rdma/ib_user_verbs.h:644:34: error: field 'base' with variable sized type 'struct ib_uverbs_create_qp_resp' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> struct ib_uverbs_create_qp_resp base;
This looks very similar, a struct of unknown size is being treated as a
header struct:
struct ib_uverbs_create_cq_resp {
__u32 cq_handle;
__u32 cqe;
__aligned_u64 driver_data[0];
};
struct ib_uverbs_ex_create_cq_resp {
struct ib_uverbs_create_cq_resp base;
__u32 comp_mask;
__u32 response_length;
};
And it only gets used here:
DECLARE_UVERBS_WRITE(IB_USER_VERBS_CMD_CREATE_CQ,
ib_uverbs_create_cq,
UAPI_DEF_WRITE_UDATA_IO(
struct ib_uverbs_create_cq,
struct ib_uverbs_create_cq_resp),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UAPI_DEF_METHOD_NEEDS_FN(create_cq)),
which must also be assuming it's a header. So probably better to just
drop the driver_data field? I don't see anything using it (that I can
find) besides as a sanity-check that the field exists and is at the end
of the struct.
--
Kees Cook
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Kees Cook <keescook@chromium.org>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: nvdimm@lists.linux.dev, alsa-devel@alsa-project.org,
kvm@vger.kernel.org, dri-devel@lists.freedesktop.org,
"Gustavo A. R. Silva" <gustavoars@kernel.org>,
dm-devel@redhat.com, target-devel@vger.kernel.org,
linux-mtd@lists.infradead.org, linux-hardening@vger.kernel.org,
linux1394-devel@lists.sourceforge.net,
linux-stm32@st-md-mailman.stormreply.com,
linux-s390@vger.kernel.org,
Daniel Borkmann <daniel@iogearbox.net>,
linux-rdma@vger.kernel.org, x86@kernel.org,
kasan-dev@googlegroups.com, lvs-devel@vger.kernel.org,
coreteam@netfilter.org, v9fs-developer@lists.sourceforge.net,
linux-mips@vger.kernel.org, intel-gfx@lists.freedesktop.org,
linux-can@vger.kernel.org, linux-raid@vger.kernel.org,
linux-m68k@lists.linux-m68k.org,
virtualization@lists.linux-foundation.org,
io-uring@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-scsi@vger.kernel.org, netdev@vger.kernel.org,
linux-usb@vger.kernel.org, linux-mmc@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
linux-sctp@vger.kernel.org, netfilter-devel@vger.kernel.org,
linux-fsdevel@vger.kernel.org, bpf@vger.kernel.org,
linux-btrfs@vger.kernel.org
Subject: Re: [PATCH][next] treewide: uapi: Replace zero-length arrays with flexible-array members
Date: Tue, 28 Jun 2022 10:54:58 -0700 [thread overview]
Message-ID: <202206281009.4332AA33@keescook> (raw)
In-Reply-To: <20220628004052.GM23621@ziepe.ca>
On Mon, Jun 27, 2022 at 09:40:52PM -0300, Jason Gunthorpe wrote:
> On Mon, Jun 27, 2022 at 08:27:37PM +0200, Daniel Borkmann wrote:
> > [...]
> > Fyi, this breaks BPF CI:
> >
> > https://github.com/kernel-patches/bpf/runs/7078719372?check_suite_focus=true
> >
> > [...]
> > progs/map_ptr_kern.c:314:26: error: field 'trie_key' with variable sized type 'struct bpf_lpm_trie_key' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> > struct bpf_lpm_trie_key trie_key;
> > ^
The issue here seems to be a collision between "unknown array size"
and known sizes:
struct bpf_lpm_trie_key {
__u32 prefixlen; /* up to 32 for AF_INET, 128 for AF_INET6 */
__u8 data[0]; /* Arbitrary size */
};
struct lpm_key {
struct bpf_lpm_trie_key trie_key;
__u32 data;
};
This is treating trie_key as a header, which it's not: it's a complete
structure. :)
Perhaps:
struct lpm_key {
__u32 prefixlen;
__u32 data;
};
I don't see anything else trying to include bpf_lpm_trie_key.
>
> This will break the rdma-core userspace as well, with a similar
> error:
>
> /usr/bin/clang-13 -DVERBS_DEBUG -Dibverbs_EXPORTS -Iinclude -I/usr/include/libnl3 -I/usr/include/drm -g -O2 -fdebug-prefix-map=/__w/1/s=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wmissing-prototypes -Wmissing-declarations -Wwrite-strings -Wformat=2 -Wcast-function-type -Wformat-nonliteral -Wdate-time -Wnested-externs -Wshadow -Wstrict-prototypes -Wold-style-definition -Werror -Wredundant-decls -g -fPIC -std=gnu11 -MD -MT libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o -MF libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o.d -o libibverbs/CMakeFiles/ibverbs.dir/cmd_flow.c.o -c ../libibverbs/cmd_flow.c
> In file included from ../libibverbs/cmd_flow.c:33:
> In file included from include/infiniband/cmd_write.h:36:
> In file included from include/infiniband/cmd_ioctl.h:41:
> In file included from include/infiniband/verbs.h:48:
> In file included from include/infiniband/verbs_api.h:66:
> In file included from include/infiniband/ib_user_ioctl_verbs.h:38:
> include/rdma/ib_user_verbs.h:436:34: error: field 'base' with variable sized type 'struct ib_uverbs_create_cq_resp' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> struct ib_uverbs_create_cq_resp base;
> ^
> include/rdma/ib_user_verbs.h:644:34: error: field 'base' with variable sized type 'struct ib_uverbs_create_qp_resp' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
> struct ib_uverbs_create_qp_resp base;
This looks very similar, a struct of unknown size is being treated as a
header struct:
struct ib_uverbs_create_cq_resp {
__u32 cq_handle;
__u32 cqe;
__aligned_u64 driver_data[0];
};
struct ib_uverbs_ex_create_cq_resp {
struct ib_uverbs_create_cq_resp base;
__u32 comp_mask;
__u32 response_length;
};
And it only gets used here:
DECLARE_UVERBS_WRITE(IB_USER_VERBS_CMD_CREATE_CQ,
ib_uverbs_create_cq,
UAPI_DEF_WRITE_UDATA_IO(
struct ib_uverbs_create_cq,
struct ib_uverbs_create_cq_resp),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UAPI_DEF_METHOD_NEEDS_FN(create_cq)),
which must also be assuming it's a header. So probably better to just
drop the driver_data field? I don't see anything using it (that I can
find) besides as a sanity-check that the field exists and is at the end
of the struct.
--
Kees Cook
next prev parent reply other threads:[~2022-06-28 17:55 UTC|newest]
Thread overview: 117+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-27 18:04 [PATCH][next] treewide: uapi: Replace zero-length arrays with flexible-array members Gustavo A. R. Silva
2022-06-27 18:04 ` Gustavo A. R. Silva
2022-06-27 18:04 ` Gustavo A. R. Silva
2022-06-27 18:04 ` Gustavo A. R. Silva
2022-06-27 18:04 ` Gustavo A. R. Silva
2022-06-27 18:04 ` [dm-devel] " Gustavo A. R. Silva
2022-06-27 18:27 ` Daniel Borkmann
2022-06-27 18:27 ` Daniel Borkmann
2022-06-27 18:27 ` Daniel Borkmann
2022-06-27 18:27 ` Daniel Borkmann
2022-06-27 18:27 ` Daniel Borkmann
2022-06-27 18:27 ` Daniel Borkmann
2022-06-27 18:27 ` [Intel-gfx] " Daniel Borkmann
2022-06-27 18:27 ` [dm-devel] " Daniel Borkmann
2022-06-27 18:35 ` Gustavo A. R. Silva
2022-06-27 18:35 ` Gustavo A. R. Silva
2022-06-27 18:35 ` Gustavo A. R. Silva
2022-06-27 18:35 ` Gustavo A. R. Silva
2022-06-27 18:35 ` Gustavo A. R. Silva
2022-06-27 18:35 ` [dm-devel] " Gustavo A. R. Silva
2022-06-28 0:40 ` Jason Gunthorpe
2022-06-28 0:40 ` Jason Gunthorpe
2022-06-28 0:40 ` Jason Gunthorpe
2022-06-28 0:40 ` Jason Gunthorpe
2022-06-28 0:40 ` Jason Gunthorpe
2022-06-28 0:40 ` Jason Gunthorpe
2022-06-28 0:40 ` [dm-devel] " Jason Gunthorpe
2022-06-28 0:58 ` Gustavo A. R. Silva
2022-06-28 0:58 ` Gustavo A. R. Silva
2022-06-28 0:58 ` Gustavo A. R. Silva
2022-06-28 0:58 ` Gustavo A. R. Silva
2022-06-28 0:58 ` Gustavo A. R. Silva
2022-06-28 0:58 ` [dm-devel] " Gustavo A. R. Silva
2022-06-28 2:21 ` Gustavo A. R. Silva
2022-06-28 2:21 ` Gustavo A. R. Silva
2022-06-28 2:21 ` Gustavo A. R. Silva
2022-06-28 2:21 ` Gustavo A. R. Silva
2022-06-28 2:21 ` Gustavo A. R. Silva
2022-06-28 2:21 ` [dm-devel] " Gustavo A. R. Silva
2022-06-28 13:36 ` Jason Gunthorpe
2022-06-28 13:36 ` Jason Gunthorpe
2022-06-28 13:36 ` Jason Gunthorpe
2022-06-28 13:36 ` Jason Gunthorpe
2022-06-28 13:36 ` Jason Gunthorpe
2022-06-28 13:36 ` Jason Gunthorpe
2022-06-28 13:36 ` [dm-devel] " Jason Gunthorpe
2022-06-28 13:56 ` Gustavo A. R. Silva
2022-06-28 13:56 ` Gustavo A. R. Silva
2022-06-28 13:56 ` Gustavo A. R. Silva
2022-06-28 13:56 ` Gustavo A. R. Silva
2022-06-28 13:56 ` Gustavo A. R. Silva
2022-06-28 13:56 ` [dm-devel] " Gustavo A. R. Silva
2022-06-28 17:54 ` Kees Cook [this message]
2022-06-28 17:54 ` Kees Cook
2022-06-28 17:54 ` Kees Cook
2022-06-28 17:54 ` Kees Cook
2022-06-28 17:54 ` Kees Cook
2022-06-28 17:54 ` Kees Cook
2022-06-28 17:54 ` [Intel-gfx] " Kees Cook
2022-06-28 17:54 ` [dm-devel] " Kees Cook
2022-06-28 18:44 ` Jason Gunthorpe
2022-06-28 18:44 ` Jason Gunthorpe
2022-06-28 18:44 ` Jason Gunthorpe
2022-06-28 18:44 ` Jason Gunthorpe
2022-06-28 18:44 ` Jason Gunthorpe
2022-06-28 18:44 ` Jason Gunthorpe
2022-06-28 18:44 ` [dm-devel] " Jason Gunthorpe
2026-02-23 14:28 ` David Woodhouse
2026-02-23 3:38 ` Gustavo A. R. Silva
2026-02-23 19:57 ` David Woodhouse
2026-02-26 11:44 ` [PATCH] KVM: x86: Fix C++ user API for structures with variable length arrays David Woodhouse
2026-02-26 19:02 ` Kees Cook
2026-02-27 8:29 ` David Woodhouse
2026-02-28 0:43 ` Kees Cook
2026-02-28 8:54 ` David Woodhouse
2026-03-05 18:36 ` Sean Christopherson
2026-03-05 19:18 ` David Woodhouse
2026-03-05 19:31 ` Sean Christopherson
2026-03-05 19:49 ` [PATCH v2] KVM: x86: Use __DECLARE_FLEX_ARRAY() for UAPI structures with VLAs David Woodhouse
2026-04-03 15:13 ` Sean Christopherson
2022-06-27 19:53 ` [PATCH][next] treewide: uapi: Replace zero-length arrays with flexible-array members Stephen Hemminger
2022-06-27 19:53 ` Stephen Hemminger
2022-06-27 19:53 ` Stephen Hemminger
2022-06-27 19:53 ` Stephen Hemminger
2022-06-27 19:53 ` Stephen Hemminger
2022-06-27 19:53 ` [Intel-gfx] " Stephen Hemminger
2022-06-27 19:53 ` [dm-devel] " Stephen Hemminger
2022-06-28 14:18 ` Gustavo A. R. Silva
2022-06-28 14:18 ` Gustavo A. R. Silva
2022-06-28 14:18 ` Gustavo A. R. Silva
2022-06-28 14:18 ` Gustavo A. R. Silva
2022-06-28 14:18 ` Gustavo A. R. Silva
2022-06-28 14:18 ` [dm-devel] " Gustavo A. R. Silva
2022-06-27 22:31 ` Dan Williams
2022-06-27 22:31 ` Dan Williams
2022-06-27 22:31 ` Dan Williams
2022-06-27 22:31 ` Dan Williams
2022-06-27 22:31 ` Dan Williams
2022-06-27 22:31 ` Dan Williams
2022-06-27 22:31 ` [Intel-gfx] " Dan Williams
2022-06-27 22:31 ` [dm-devel] " Dan Williams
2022-06-28 7:27 ` Geert Uytterhoeven
2022-06-28 7:27 ` Geert Uytterhoeven
2022-06-28 7:27 ` Geert Uytterhoeven
2022-06-28 7:27 ` Geert Uytterhoeven
2022-06-28 7:27 ` Geert Uytterhoeven
2022-06-28 7:27 ` Geert Uytterhoeven
2022-06-28 7:27 ` [Intel-gfx] " Geert Uytterhoeven
2022-06-28 7:27 ` [dm-devel] " Geert Uytterhoeven
2022-06-28 18:05 ` Kees Cook
2022-06-28 18:05 ` Kees Cook
2022-06-28 18:05 ` Kees Cook
2022-06-28 18:05 ` Kees Cook
2022-06-28 18:05 ` Kees Cook
2022-06-28 18:05 ` Kees Cook
2022-06-28 18:05 ` [Intel-gfx] " Kees Cook
2022-06-28 18:05 ` [dm-devel] " Kees Cook
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202206281009.4332AA33@keescook \
--to=keescook@chromium.org \
--cc=alsa-devel@alsa-project.org \
--cc=bpf@vger.kernel.org \
--cc=coreteam@netfilter.org \
--cc=daniel@iogearbox.net \
--cc=dm-devel@redhat.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=gustavoars@kernel.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=io-uring@vger.kernel.org \
--cc=jgg@ziepe.ca \
--cc=kasan-dev@googlegroups.com \
--cc=kvm@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-can@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-m68k@lists.linux-m68k.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linux-raid@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linux-sctp@vger.kernel.org \
--cc=linux-stm32@st-md-mailman.stormreply.com \
--cc=linux-usb@vger.kernel.org \
--cc=linux1394-devel@lists.sourceforge.net \
--cc=lvs-devel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=netfilter-devel@vger.kernel.org \
--cc=nvdimm@lists.linux.dev \
--cc=target-devel@vger.kernel.org \
--cc=v9fs-developer@lists.sourceforge.net \
--cc=virtualization@lists.linux-foundation.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.