diff options
author | Justin M. Forbes <jforbes@redhat.com> | 2017-03-22 15:12:43 -0500 |
---|---|---|
committer | Justin M. Forbes <jforbes@redhat.com> | 2017-03-22 15:12:43 -0500 |
commit | ab92116c44de88697203f60d6a655da62eb211cc (patch) | |
tree | 45f1c29833afeafd06f9dd357d1fb437debf4861 | |
parent | 9f7a0c0e7700d6455c3960fe1c00703778321bb3 (diff) | |
download | kernel-ab92116c44de88697203f60d6a655da62eb211cc.tar.gz kernel-ab92116c44de88697203f60d6a655da62eb211cc.tar.xz kernel-ab92116c44de88697203f60d6a655da62eb211cc.zip |
don't forget the patch
-rw-r--r-- | genetlink-fix-counting-regression-on-ctrl_dumpfamily.patch | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/genetlink-fix-counting-regression-on-ctrl_dumpfamily.patch b/genetlink-fix-counting-regression-on-ctrl_dumpfamily.patch new file mode 100644 index 000000000..ab048d1c9 --- /dev/null +++ b/genetlink-fix-counting-regression-on-ctrl_dumpfamily.patch @@ -0,0 +1,55 @@ +From: Stanislaw Gruszka <sgruszka@redhat.com> +Date: 2017-03-22 15:08:33 +Subject: [PATCH 4.11] genetlink: fix counting regression on ctrl_dumpfamily() + +Commit 2ae0f17df1cd ("genetlink: use idr to track families") replaced + + if (++n < fams_to_skip) + continue; +into: + + if (n++ < fams_to_skip) + continue; + +This subtle change cause that on retry ctrl_dumpfamily() call we omit +one family that failed to do ctrl_fill_info() on previous call, because +cb->args[0] = n number counts also family that failed to do +ctrl_fill_info(). + +Patch fixes the problem and avoid confusion in the future just decrease +n counter when ctrl_fill_info() fail. + +User visible problem caused by this bug is failure to get access to +some genetlink family i.e. nl80211. However problem is reproducible +only if number of registered genetlink families is big enough to +cause second call of ctrl_dumpfamily(). + +Cc: Xose Vazquez Perez <xose.vazquez@gmail.com> +Cc: Larry Finger <Larry.Finger@lwfinger.net> +Cc: Johannes Berg <johannes@sipsolutions.net> +Fixes: 2ae0f17df1cd ("genetlink: use idr to track families") +Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> +--- +Dave, please also target this for 4.10+ -stable. + + net/netlink/genetlink.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c +index fb6e10f..92e0981 100644 +--- a/net/netlink/genetlink.c ++++ b/net/netlink/genetlink.c +@@ -783,8 +783,10 @@ static int ctrl_dumpfamily(struct sk_buff *skb, struct netlink_callback *cb) + + if (ctrl_fill_info(rt, NETLINK_CB(cb->skb).portid, + cb->nlh->nlmsg_seq, NLM_F_MULTI, +- skb, CTRL_CMD_NEWFAMILY) < 0) ++ skb, CTRL_CMD_NEWFAMILY) < 0) { ++ n--; + break; ++ } + } + + cb->args[0] = n; +-- +1.7.1 |