[PATCH] iseries_veth: Don't send packets to LPARs which aren't up
authorMichael Ellerman <michael@ellerman.id.au>
Thu, 12 May 2005 07:47:27 +0000 (17:47 +1000)
committerJeff Garzik <jgarzik@pobox.com>
Sun, 15 May 2005 22:08:05 +0000 (18:08 -0400)
Hi Andrew, Jeff,

The iseries_veth driver has a logic bug which means it will erroneously
send packets to LPARs for which we don't have a connection.

This usually isn't a big problem because the Hypervisor call fails
gracefully and we return, but if packets are TX'ed during the negotiation
of the connection bad things might happen.

Regardless, the right thing is to bail early if we know there's no
connection.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
drivers/net/iseries_veth.c

index 855f8b2cf13b6f83d1b41011253d514b22e5cc2c..7d0ef2969b4e7419dd840ca1b7147464ecc4c16b 100644 (file)
@@ -924,7 +924,7 @@ static int veth_transmit_to_one(struct sk_buff *skb, HvLpIndex rlp,
 
        spin_lock_irqsave(&cnx->lock, flags);
 
 
        spin_lock_irqsave(&cnx->lock, flags);
 
-       if (! cnx->state & VETH_STATE_READY)
+       if (! (cnx->state & VETH_STATE_READY))
                goto drop;
 
        if ((skb->len - 14) > VETH_MAX_MTU)
                goto drop;
 
        if ((skb->len - 14) > VETH_MAX_MTU)