Skip to content

Commit

Permalink
WAN: protect HDLC proto list while insmod/rmmod
Browse files Browse the repository at this point in the history
WAN: protect protocol list in hdlc.c with RTNL.

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
  • Loading branch information
Krzysztof Halasa authored and Jeff Garzik committed May 22, 2008
1 parent 4ecc8c0 commit fa701bd
Showing 1 changed file with 11 additions and 8 deletions.
19 changes: 11 additions & 8 deletions drivers/net/wan/hdlc.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,7 @@ static const char* version = "HDLC support module revision 1.22";

#undef DEBUG_LINK

static struct hdlc_proto *first_proto = NULL;

static struct hdlc_proto *first_proto;

static int hdlc_change_mtu(struct net_device *dev, int new_mtu)
{
Expand Down Expand Up @@ -314,21 +313,25 @@ void detach_hdlc_protocol(struct net_device *dev)

void register_hdlc_protocol(struct hdlc_proto *proto)
{
rtnl_lock();
proto->next = first_proto;
first_proto = proto;
rtnl_unlock();
}


void unregister_hdlc_protocol(struct hdlc_proto *proto)
{
struct hdlc_proto **p = &first_proto;
while (*p) {
if (*p == proto) {
*p = proto->next;
return;
}
struct hdlc_proto **p;

rtnl_lock();
p = &first_proto;
while (*p != proto) {
BUG_ON(!*p);
p = &((*p)->next);
}
*p = proto->next;
rtnl_unlock();
}


Expand Down

0 comments on commit fa701bd

Please sign in to comment.