summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorColin Ian King <colin.king@canonical.com>2017-10-17 16:01:30 +0100
committerDavid S. Miller <davem@davemloft.net>2017-10-19 13:13:14 +0100
commit22ce97fe49b5522e0f97b7c2282ed71a1abd7410 (patch)
tree9117bf5372fd50adbfc458f7542c98ed5c0338d9 /net
parentfa31f0c98d64212b2b2b4a1e6d887208b6acb2d9 (diff)
downloadlinux-22ce97fe49b5522e0f97b7c2282ed71a1abd7410.tar.bz2
mqprio: fix potential null pointer dereference on opt
The pointer opt has a null check however before for this check opt is dereferenced when len is initialized, hence we potentially have a null pointer deference on opt. Avoid this by checking for a null opt before dereferencing it. Detected by CoverityScan, CID#1458234 ("Dereference before null check") Fixes: 4e8b86c06269 ("mqprio: Introduce new hardware offload mode and shaper in mqprio") Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/sched/sch_mqprio.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/sched/sch_mqprio.c b/net/sched/sch_mqprio.c
index cae91b4b08a6..51c2b289c69b 100644
--- a/net/sched/sch_mqprio.c
+++ b/net/sched/sch_mqprio.c
@@ -142,7 +142,7 @@ static int mqprio_init(struct Qdisc *sch, struct nlattr *opt)
struct nlattr *tb[TCA_MQPRIO_MAX + 1];
struct nlattr *attr;
int rem;
- int len = nla_len(opt) - NLA_ALIGN(sizeof(*qopt));
+ int len;
BUILD_BUG_ON(TC_MAX_QUEUE != TC_QOPT_MAX_QUEUE);
BUILD_BUG_ON(TC_BITMASK != TC_QOPT_BITMASK);
@@ -164,6 +164,7 @@ static int mqprio_init(struct Qdisc *sch, struct nlattr *opt)
if (mqprio_parse_opt(dev, qopt))
return -EINVAL;
+ len = nla_len(opt) - NLA_ALIGN(sizeof(*qopt));
if (len > 0) {
err = parse_attr(tb, TCA_MQPRIO_MAX, opt, mqprio_policy,
sizeof(*qopt));