netfilter: qtaguid: Don't BUG_ON if create_if_tag_stat fails
If create_if_tag_stat fails to allocate memory (GFP_ATOMIC) the following will happen: qtaguid: iface_stat: tag stat alloc failed ... kernel BUG at xt_qtaguid.c:1482! Signed-off-by: Pontus Fuchs <pontus.fuchs@gmail.com>
This commit is contained in:
parent
839c250642
commit
d948af4500
1 changed files with 5 additions and 0 deletions
|
@ -1461,6 +1461,8 @@ static void if_tag_stat_update(const char *ifname, uid_t uid,
|
|||
* - No {0, uid_tag} stats and no {acc_tag, uid_tag} stats.
|
||||
*/
|
||||
new_tag_stat = create_if_tag_stat(iface_entry, uid_tag);
|
||||
if (!new_tag_stat)
|
||||
goto unlock;
|
||||
uid_tag_counters = &new_tag_stat->counters;
|
||||
} else {
|
||||
uid_tag_counters = &tag_stat_entry->counters;
|
||||
|
@ -1469,6 +1471,8 @@ 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);
|
||||
if (!new_tag_stat)
|
||||
goto unlock;
|
||||
new_tag_stat->parent_counters = uid_tag_counters;
|
||||
} else {
|
||||
/*
|
||||
|
@ -1482,6 +1486,7 @@ static void if_tag_stat_update(const char *ifname, uid_t uid,
|
|||
BUG_ON(!new_tag_stat);
|
||||
}
|
||||
tag_stat_update(new_tag_stat, direction, proto, bytes);
|
||||
unlock:
|
||||
spin_unlock_bh(&iface_entry->tag_stat_list_lock);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue