Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9871f1ad authored by Vasiliy Kulikov's avatar Vasiliy Kulikov Committed by David S. Miller
Browse files

ip: fix error handling in ip_finish_output2()



__neigh_create() returns either a pointer to struct neighbour or PTR_ERR().
But the caller expects it to return either a pointer or NULL.  Replace
the NULL check with IS_ERR() check.

The bug was introduced in a263b309
("ipv4: Make neigh lookups directly in output packet path.").

Signed-off-by: default avatarVasily Kulikov <segoon@openwall.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 91d27a86
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -197,7 +197,7 @@ static inline int ip_finish_output2(struct sk_buff *skb)
	neigh = __ipv4_neigh_lookup_noref(dev, nexthop);
	if (unlikely(!neigh))
		neigh = __neigh_create(&arp_tbl, &nexthop, dev, false);
	if (neigh) {
	if (!IS_ERR(neigh)) {
		int res = dst_neigh_output(dst, neigh, skb);

		rcu_read_unlock_bh();