Skip to content

Commit

Permalink
netfilter: qtaguid: initialize a local var to keep compiler happy.
Browse files Browse the repository at this point in the history
There was a case that might have seemed like new_tag_stat was not
initialized and actually used.
Added comment explaining why it was impossible, and a BUG()
in case the logic gets changed.

Change-Id: I1eddd1b6f754c08a3bf89f7e9427e5dce1dfb081
Signed-off-by: JP Abgrall <[email protected]>
  • Loading branch information
jpa468 authored and rmcc committed Aug 8, 2013
1 parent 2a40370 commit 897cc49
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion net/netfilter/xt_qtaguid.c
Original file line number Diff line number Diff line change
Expand Up @@ -1265,7 +1265,7 @@ static void if_tag_stat_update(const char *ifname, uid_t uid,
struct data_counters *uid_tag_counters;
struct sock_tag *sock_tag_entry;
struct iface_stat *iface_entry;
struct tag_stat *new_tag_stat;
struct tag_stat *new_tag_stat = NULL;
MT_DEBUG("qtaguid: if_tag_stat_update(ifname=%s "
"uid=%u sk=%p dir=%d proto=%d bytes=%d)\n",
ifname, uid, sk, direction, proto, bytes);
Expand Down Expand Up @@ -1330,8 +1330,19 @@ static void if_tag_stat_update(const char *ifname, uid_t uid,
}

if (acct_tag) {
/* Create the child {acct_tag, uid_tag} and hook up parent. */
new_tag_stat = create_if_tag_stat(iface_entry, tag);
new_tag_stat->parent_counters = uid_tag_counters;
} else {
/*
* For new_tag_stat to be still NULL here would require:
* {0, uid_tag} exists
* and {acct_tag, uid_tag} doesn't exist
* AND acct_tag == 0.
* Impossible. This reassures us that new_tag_stat
* below will always be assigned.
*/
BUG_ON(!new_tag_stat);
}
tag_stat_update(new_tag_stat, direction, proto, bytes);
spin_unlock_bh(&iface_entry->tag_stat_list_lock);
Expand Down

0 comments on commit 897cc49

Please sign in to comment.