Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5c7513a4 authored by Pontus Fuchs's avatar Pontus Fuchs Committed by Amit Pundir
Browse files

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: default avatarPontus Fuchs <pontus.fuchs@gmail.com>
parent 7a4314d9
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -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);
}