Skip to content

Commit 78d44b8

Browse files
GustavoARSilvahtejun
authored andcommitted
cgroup: Avoid -Wstringop-overflow warnings
Change the notation from pointer-to-array to pointer-to-pointer. With this, we avoid the compiler complaining about trying to access a region of size zero as an argument during function calls. This is a workaround to prevent the compiler complaining about accessing an array of size zero when evaluating the arguments of a couple of function calls. See below: kernel/cgroup/cgroup.c: In function 'find_css_set': kernel/cgroup/cgroup.c:1206:16: warning: 'find_existing_css_set' accessing 4 bytes in a region of size 0 [-Wstringop-overflow=] 1206 | cset = find_existing_css_set(old_cset, cgrp, template); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/cgroup/cgroup.c:1206:16: note: referencing argument 3 of type 'struct cgroup_subsys_state *[0]' kernel/cgroup/cgroup.c:1071:24: note: in a call to function 'find_existing_css_set' 1071 | static struct css_set *find_existing_css_set(struct css_set *old_cset, | ^~~~~~~~~~~~~~~~~~~~~ With the change to pointer-to-pointer, the functions are not prevented from being executed, and they will do what they have to do when CGROUP_SUBSYS_COUNT == 0. Address the following -Wstringop-overflow warnings seen when built with ARM architecture and aspeed_g4_defconfig configuration (notice that under this configuration CGROUP_SUBSYS_COUNT == 0): kernel/cgroup/cgroup.c:1208:16: warning: 'find_existing_css_set' accessing 4 bytes in a region of size 0 [-Wstringop-overflow=] kernel/cgroup/cgroup.c:1258:15: warning: 'css_set_hash' accessing 4 bytes in a region of size 0 [-Wstringop-overflow=] kernel/cgroup/cgroup.c:6089:18: warning: 'css_set_hash' accessing 4 bytes in a region of size 0 [-Wstringop-overflow=] kernel/cgroup/cgroup.c:6153:18: warning: 'css_set_hash' accessing 4 bytes in a region of size 0 [-Wstringop-overflow=] This results in no differences in binary output. Link: KSPP#316 Signed-off-by: Gustavo A. R. Silva <[email protected]> Reviewed-by: Kees Cook <[email protected]> Signed-off-by: Tejun Heo <[email protected]>
1 parent 82b90b6 commit 78d44b8

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

kernel/cgroup/cgroup.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -907,7 +907,7 @@ static void css_set_move_task(struct task_struct *task,
907907
#define CSS_SET_HASH_BITS 7
908908
static DEFINE_HASHTABLE(css_set_table, CSS_SET_HASH_BITS);
909909

910-
static unsigned long css_set_hash(struct cgroup_subsys_state *css[])
910+
static unsigned long css_set_hash(struct cgroup_subsys_state **css)
911911
{
912912
unsigned long key = 0UL;
913913
struct cgroup_subsys *ss;
@@ -1048,7 +1048,7 @@ static bool compare_css_sets(struct css_set *cset,
10481048
*/
10491049
static struct css_set *find_existing_css_set(struct css_set *old_cset,
10501050
struct cgroup *cgrp,
1051-
struct cgroup_subsys_state *template[])
1051+
struct cgroup_subsys_state **template)
10521052
{
10531053
struct cgroup_root *root = cgrp->root;
10541054
struct cgroup_subsys *ss;

0 commit comments

Comments
 (0)