diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 11b25fbf3dd29d92ed496eaf951ffe21c18e2cfe..9201e3621351144f1fde497dfa1025d93d0a76f9 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -2031,7 +2031,8 @@ static int do_setlink(const struct sk_buff *skb, struct sockaddr *sa; int len; - len = sizeof(sa_family_t) + dev->addr_len; + len = sizeof(sa_family_t) + max_t(size_t, dev->addr_len, + sizeof(*sa)); sa = kmalloc(len, GFP_KERNEL); if (!sa) { err = -ENOMEM;