Merge branch 'thermal-framework' into linux-linaro-lsk
[firefly-linux-kernel-4.4.55.git] / net / core / filter.c
index 52f01229ee0185547aad899fbe4cd43fc2cdbd24..c6c18d8a2d88639e4f49b4d91ccaf5eb7c1b9f7c 100644 (file)
@@ -355,6 +355,8 @@ load_b:
 
                        if (skb_is_nonlinear(skb))
                                return 0;
+                       if (skb->len < sizeof(struct nlattr))
+                               return 0;
                        if (A > skb->len - sizeof(struct nlattr))
                                return 0;
 
@@ -371,11 +373,13 @@ load_b:
 
                        if (skb_is_nonlinear(skb))
                                return 0;
+                       if (skb->len < sizeof(struct nlattr))
+                               return 0;
                        if (A > skb->len - sizeof(struct nlattr))
                                return 0;
 
                        nla = (struct nlattr *)&skb->data[A];
-                       if (nla->nla_len > A - skb->len)
+                       if (nla->nla_len > skb->len - A)
                                return 0;
 
                        nla = nla_find_nested(nla, X);