Skip to content

Commit

Permalink
xfrm: policy: Restore dir assignments in xfrm_hash_rebuild()
Browse files Browse the repository at this point in the history
Clang warns (or errors with CONFIG_WERROR):

  net/xfrm/xfrm_policy.c:1286:8: error: variable 'dir' is uninitialized when used here [-Werror,-Wuninitialized]
   1286 |                 if ((dir & XFRM_POLICY_MASK) == XFRM_POLICY_OUT) {
        |                      ^~~
  net/xfrm/xfrm_policy.c:1257:9: note: initialize the variable 'dir' to silence this warning
   1257 |         int dir;
        |                ^
        |                 = 0
  1 error generated.

A recent refactoring removed some assignments to dir because
xfrm_policy_is_dead_or_sk() has a dir assignment in it. However, dir is
used elsewhere in xfrm_hash_rebuild(), including within loops where it
needs to be reloaded for each policy. Restore the assignments before the
first use of dir to fix the warning and ensure dir is properly
initialized throughout the function.

Fixes: 08c2182 ("xfrm: policy: use recently added helper in more places")
Acked-by: Florian Westphal <[email protected]>
Signed-off-by: Nathan Chancellor <[email protected]>
Signed-off-by: Steffen Klassert <[email protected]>
  • Loading branch information
nathanchance authored and klassert committed Sep 9, 2024
1 parent 6a13f5a commit e62d393
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions net/xfrm/xfrm_policy.c
Original file line number Diff line number Diff line change
Expand Up @@ -1283,6 +1283,7 @@ static void xfrm_hash_rebuild(struct work_struct *work)
if (xfrm_policy_is_dead_or_sk(policy))
continue;

dir = xfrm_policy_id2dir(policy->index);
if ((dir & XFRM_POLICY_MASK) == XFRM_POLICY_OUT) {
if (policy->family == AF_INET) {
dbits = rbits4;
Expand Down Expand Up @@ -1337,6 +1338,7 @@ static void xfrm_hash_rebuild(struct work_struct *work)
hlist_del_rcu(&policy->bydst);

newpos = NULL;
dir = xfrm_policy_id2dir(policy->index);
chain = policy_hash_bysel(net, &policy->selector,
policy->family, dir);

Expand Down

0 comments on commit e62d393

Please sign in to comment.