diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 3891702b81df8fef757677dc779f4bddd2e31789..d9d4970b9b07c0da22f97e29a8ac0f38ec4caff1 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@ -2448,8 +2448,12 @@ static int packet_do_bind(struct sock *sk, struct net_device *dev, __be16 protoc { struct packet_sock *po = pkt_sk(sk); - if (po->fanout) + if (po->fanout) { + if (dev) + dev_put(dev); + return -EINVAL; + } lock_sock(sk);