Kees Cook
2023-Sep-22 17:51 UTC
[PATCH] virtio_console: Annotate struct port_buffer with __counted_by
Prepare for the coming implementation by GCC and Clang of the __counted_by attribute. Flexible array members annotated with __counted_by can have their accesses bounds-checked at run-time checking via CONFIG_UBSAN_BOUNDS (for array indexing) and CONFIG_FORTIFY_SOURCE (for strcpy/memcpy-family functions). As found with Coccinelle[1], add __counted_by for struct port_buffer. [1] https://github.com/kees/kernel-tools/blob/trunk/coccinelle/examples/counted_by.cocci Cc: Amit Shah <amit at kernel.org> Cc: Arnd Bergmann <arnd at arndb.de> Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org> Cc: virtualization at lists.linux-foundation.org Signed-off-by: Kees Cook <keescook at chromium.org> --- drivers/char/virtio_console.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c index 680d1ef2a217..431e9e5bf9c1 100644 --- a/drivers/char/virtio_console.c +++ b/drivers/char/virtio_console.c @@ -106,7 +106,7 @@ struct port_buffer { unsigned int sgpages; /* sg is used if spages > 0. sg must be the last in is struct */ - struct scatterlist sg[]; + struct scatterlist sg[] __counted_by(sgpages); }; /* -- 2.34.1
Gustavo A. R. Silva
2023-Sep-23 16:32 UTC
[PATCH] virtio_console: Annotate struct port_buffer with __counted_by
On 9/22/23 11:51, Kees Cook wrote:> Prepare for the coming implementation by GCC and Clang of the __counted_by > attribute. Flexible array members annotated with __counted_by can have > their accesses bounds-checked at run-time checking via CONFIG_UBSAN_BOUNDS > (for array indexing) and CONFIG_FORTIFY_SOURCE (for strcpy/memcpy-family > functions). > > As found with Coccinelle[1], add __counted_by for struct port_buffer. > > [1] https://github.com/kees/kernel-tools/blob/trunk/coccinelle/examples/counted_by.cocci > > Cc: Amit Shah <amit at kernel.org> > Cc: Arnd Bergmann <arnd at arndb.de> > Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org> > Cc: virtualization at lists.linux-foundation.org > Signed-off-by: Kees Cook <keescook at chromium.org>Reviewed-by: Gustavo A. R. Silva <gustavoars at kernel.org> Thanks -- Gustavo> --- > drivers/char/virtio_console.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c > index 680d1ef2a217..431e9e5bf9c1 100644 > --- a/drivers/char/virtio_console.c > +++ b/drivers/char/virtio_console.c > @@ -106,7 +106,7 @@ struct port_buffer { > unsigned int sgpages; > > /* sg is used if spages > 0. sg must be the last in is struct */ > - struct scatterlist sg[]; > + struct scatterlist sg[] __counted_by(sgpages); > }; > > /*
Amit Shah
2023-Sep-25 11:24 UTC
[PATCH] virtio_console: Annotate struct port_buffer with __counted_by
On Fri, 2023-09-22 at 10:51 -0700, Kees Cook wrote:> Prepare for the coming implementation by GCC and Clang of the __counted_by > attribute. Flexible array members annotated with __counted_by can have > their accesses bounds-checked at run-time checking via CONFIG_UBSAN_BOUNDS > (for array indexing) and CONFIG_FORTIFY_SOURCE (for strcpy/memcpy-family > functions). > > As found with Coccinelle[1], add __counted_by for struct port_buffer. > > [1] https://github.com/kees/kernel-tools/blob/trunk/coccinelle/examples/counted_by.cocci > > Cc: Amit Shah <amit at kernel.org> > Cc: Arnd Bergmann <arnd at arndb.de> > Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org> > Cc: virtualization at lists.linux-foundation.org > Signed-off-by: Kees Cook <keescook at chromium.org> > --- > drivers/char/virtio_console.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c > index 680d1ef2a217..431e9e5bf9c1 100644 > --- a/drivers/char/virtio_console.c > +++ b/drivers/char/virtio_console.c > @@ -106,7 +106,7 @@ struct port_buffer { > unsigned int sgpages; > > /* sg is used if spages > 0. sg must be the last in is struct */ > - struct scatterlist sg[]; > + struct scatterlist sg[] __counted_by(sgpages); > };Reviewed-by: Amit Shah <amit at kernel.org> Greg, please pick this up. Thanks, Amit
Kees Cook
2023-Oct-24 21:18 UTC
[PATCH] virtio_console: Annotate struct port_buffer with __counted_by
On Fri, 22 Sep 2023 10:51:15 -0700, Kees Cook wrote:> Prepare for the coming implementation by GCC and Clang of the __counted_by > attribute. Flexible array members annotated with __counted_by can have > their accesses bounds-checked at run-time checking via CONFIG_UBSAN_BOUNDS > (for array indexing) and CONFIG_FORTIFY_SOURCE (for strcpy/memcpy-family > functions). > > As found with Coccinelle[1], add __counted_by for struct port_buffer. > > [...]Applied to for-next/hardening, thanks! [1/1] virtio_console: Annotate struct port_buffer with __counted_by https://git.kernel.org/kees/c/bf5abc17bc43 Take care, -- Kees Cook