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

Commit 41664c03 authored by Michael Ellerman's avatar Michael Ellerman Committed by Jeff Garzik
Browse files

[PATCH] iseries_veth: Don't leak skbs in RX path



Hi Andrew, Jeff,

Under some strange circumstances the iseries_veth driver can leak skbs.

Fix is simply to call dev_kfree_skb() in the right place.
Fix up the comment as well.

Signed-off-by: default avatarMichael Ellerman <michael@ellerman.id.au>
parent eb235aef
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -1264,13 +1264,18 @@ static void veth_receive(struct veth_lpar_connection *cnx,

		vlan = skb->data[9];
		dev = veth_dev[vlan];
		if (! dev)
			/* Some earlier versions of the driver sent
			   broadcasts down all connections, even to
			   lpars that weren't on the relevant vlan.
			   So ignore packets belonging to a vlan we're
			   not on. */
		if (! dev) {
			/*
			 * Some earlier versions of the driver sent
			 * broadcasts down all connections, even to lpars
			 * that weren't on the relevant vlan. So ignore
			 * packets belonging to a vlan we're not on.
			 * We can also be here if we receive packets while
			 * the driver is going down, because then dev is NULL.
			 */
			dev_kfree_skb_irq(skb);
			continue;
		}

		port = (struct veth_port *)dev->priv;
		dest = *((u64 *) skb->data) & 0xFFFFFFFFFFFF0000;