Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit04f5c36

Browse files
GustavoARSilvaPeter Zijlstra
authored and
Peter Zijlstra
committed
sched/fair: Replace zero-length array with flexible-array
The current codebase makes use of the zero-length array languageextension to the C90 standard, but the preferred mechanism to declarevariable-length types such as these ones is a flexible array member[1][2],introduced in C99:struct foo { int stuff; struct boo array[];};By making use of the mechanism above, we will get a compiler warningin case the flexible array does not occur last in the structure, whichwill help us prevent some kind of undefined behavior bugs from beinginadvertently introduced[3] to the codebase from now on.Also, notice that, dynamic memory allocations won't be affected bythis change:"Flexible array members have incomplete type, and so the sizeof operatormay not be applied. As a quirk of the original implementation ofzero-length arrays, sizeof evaluates to zero."[1]sizeof(flexible-array-member) triggers a warning because flexible arraymembers have incomplete type[1]. There are some instances of code inwhich the sizeof operator is being incorrectly/erroneously applied tozero-length arrays and the result is zero. Such instances may be hidingsome bugs. So, this work (flexible-array member conversions) will alsohelp to get completely rid of those sorts of issues.This issue was found with the help of Coccinelle.[1]https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html[2]KSPP#21[3] commit7649773 ("cxgb3/l2t: Fix undefined behaviour")Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>Link:https://lkml.kernel.org/r/20200507192141.GA16183@embeddedor
1 parent95d6859 commit04f5c36

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

‎kernel/sched/fair.c‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1094,7 +1094,7 @@ struct numa_group {
10941094
* more by CPU use than by memory faults.
10951095
*/
10961096
unsigned long*faults_cpu;
1097-
unsigned longfaults[0];
1097+
unsigned longfaults[];
10981098
};
10991099

11001100
/*

‎kernel/sched/sched.h‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1462,7 +1462,7 @@ struct sched_group {
14621462
* by attaching extra space to the end of the structure,
14631463
* depending on how many CPUs the kernel has booted up with)
14641464
*/
1465-
unsigned longcpumask[0];
1465+
unsigned longcpumask[];
14661466
};
14671467

14681468
staticinlinestructcpumask*sched_group_span(structsched_group*sg)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp