hte: Annotate struct hte_device with __counted_by
PATCH 1/1 hte: Annotate struct hte_device 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 hte_device.
[1] https://github.com/kees/kernel-tools/blob/trunk/coccinelle/examples/counted_by.cocci
--- drivers/hte/hte.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/hte/hte.c +1 -1
@@ -88,7 +88,7 @@ struct hte_device {struct list_head list;struct hte_chip *chip;struct module *owner; -struct hte_ts_info ei[]; + struct hte_ts_info ei[] __counted_by(nlines); };#ifdef CONFIG_DEBUG_FS
Signature · 1 line
2.34.1
Quoted 6 lines · Kees Cook
Prepare for the coming implementation by GCC and Clang of the
__counted_byattribute. Flexible array members annotated with__counted_bycan have their accesses bounds-checked at run-time checking viaCONFIG_UBSAN_BOUNDS(for array indexing) andCONFIG_FORTIFY_SOURCE(for strcpy/memcpy-family functions).
Quoted 7 lines
As found with Coccinelle[1], add
__counted_byfor structhte_device.[1] https://github.com/kees/kernel-tools/blob/trunk/coccinelle/examples/counted_by.cocci
Thanks
Signature · 1 line
Gustavo
Quoted 17 lines
--- drivers/hte/hte.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/hte/hte.c +1
-1@@ -88,7 +88,7 @@ struct hte_device {struct list_head list;struct hte_chip *chip;struct module *owner; -struct hte_ts_info ei[]; + struct hte_ts_info ei[] __counted_by(nlines); };#ifdef CONFIG_DEBUG_FS
Quoted 13 lines · Gustavo A. R. Silva
Quoted 10 lines · Kees Cook
Prepare for the coming implementation by GCC and Clang of the
__counted_byattribute. Flexible array members annotated with__counted_bycan have their accesses bounds-checked at run-time checking viaCONFIG_UBSAN_BOUNDS(for array indexing) andCONFIG_FORTIFY_SOURCE(for strcpy/memcpy-family functions).As found with Coccinelle[1], add
__counted_byfor structhte_device.[1] https://github.com/kees/kernel-tools/blob/trunk/coccinelle/examples/counted_by.cocci
Quoted 7 lines
Quoted 3 lines
Reviewed-by Gustavo A. R. Silva <[email protected]>Thanks
Quoted 7 lines · Kees Cook
Prepare for the coming implementation by GCC and Clang of the
__counted_byattribute. Flexible array members annotated with__counted_bycan have their accesses bounds-checked at run-time checking viaCONFIG_UBSAN_BOUNDS(for array indexing) andCONFIG_FORTIFY_SOURCE(for strcpy/memcpy-family functions).
Quoted 7 lines
As found with Coccinelle[1], add
__counted_byfor structhte_device.[1] https://github.com/kees/kernel-tools/blob/trunk/coccinelle/examples/counted_by.cocci
Yep, this flexible array member is counted by @nlines which is evident throughout hte.c:
gdev = kzalloc(struct_size(gdev, ei, chip->nlines), GFP_KERNEL);
...
gdev->nlines = chip->nlines;
...
for (i = 0; i < chip->nlines; i++) {
gdev->ei[i].gdev = gdev;
...Quoted 21 lines
--- drivers/hte/hte.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/hte/hte.c +1
-2@@ -88,7 +88,7 @@ struct hte_device {struct list_head list;struct hte_chip *chip;struct module *owner; -struct hte_ts_info ei[]; + struct hte_ts_info ei[] __counted_by(nlines); };#ifdef CONFIG_DEBUG_FS --2.34.1