summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--net/core/pktgen.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/core/pktgen.c b/net/core/pktgen.c
index b678b28dedae..def35a734d9d 100644
--- a/net/core/pktgen.c
+++ b/net/core/pktgen.c
@@ -900,6 +900,10 @@ static ssize_t get_labels(const char __user *buffer, struct pktgen_dev *pkt_dev)
pkt_dev->nr_labels = 0;
do {
__u32 tmp;
+
+ if (n >= MAX_MPLS_LABELS)
+ return -E2BIG;
+
len = hex32_arg(&buffer[i], 8, &tmp);
if (len <= 0)
return len;
@@ -911,8 +915,6 @@ static ssize_t get_labels(const char __user *buffer, struct pktgen_dev *pkt_dev)
return -EFAULT;
i++;
n++;
- if (n >= MAX_MPLS_LABELS)
- return -E2BIG;
} while (c == ',');
pkt_dev->nr_labels = n;