netdev
[Top] [All Lists]

race in net/ipv4/ipip.c ?

To: netdev@xxxxxxxxxxx
Subject: race in net/ipv4/ipip.c ?
From: Lennert Buytenhek <buytenh@xxxxxxxxxxxxxx>
Date: Wed, 12 Jan 2005 13:23:00 +0100
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mutt/1.4.1i
Hi!

        static void ipip_tunnel_link(struct ipip_tunnel *t)
        {
                struct ipip_tunnel **tp = ipip_bucket(t);

                t->next = *tp;
                write_lock_bh(&ipip_lock);
                *tp = t;
                write_unlock_bh(&ipip_lock);
        }

Shouldn't the "t->next = *tp" be done inside the write lock?

A similar race exists in ipip_tunnel_unlink, and ip_gre seems to have
the same issues.


cheers,
Lennert

<Prev in Thread] Current Thread [Next in Thread>