From ae5358b2f2cb42eb207d285d48231055a02ad2b3 Mon Sep 17 00:00:00 2001 From: Jeff Dike Date: Sat, 10 Feb 2007 01:43:56 -0800 Subject: [PATCH] --- yaml --- r: 47445 b: refs/heads/master c: d3b7f69de2b92e4b6057d81e6c52f629a8663368 h: refs/heads/master i: 47443: c6afa2c42256025d9f5d0996523e44c6381e61d8 v: v3 --- [refs] | 2 +- trunk/arch/um/drivers/net_kern.c | 9 +++++---- trunk/arch/um/include/net_kern.h | 8 ++++---- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 5e0b57a1fa23..17a71358ec05 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 190c3e456325942a17785332fe15b68eeb3775ca +refs/heads/master: d3b7f69de2b92e4b6057d81e6c52f629a8663368 diff --git a/trunk/arch/um/drivers/net_kern.c b/trunk/arch/um/drivers/net_kern.c index 07e839e387db..b10154cc46b6 100644 --- a/trunk/arch/um/drivers/net_kern.c +++ b/trunk/arch/um/drivers/net_kern.c @@ -498,10 +498,8 @@ struct eth_init { int index; }; -/* Filled in at boot time. Will need locking if the transports become - * modular. - */ -struct list_head transports = LIST_HEAD_INIT(transports); +static DEFINE_SPINLOCK(transports_lock); +static LIST_HEAD(transports); /* Filled in during early boot */ struct list_head eth_cmd_line = LIST_HEAD_INIT(eth_cmd_line); @@ -540,7 +538,10 @@ void register_transport(struct transport *new) char *mac = NULL; int match; + spin_lock(&transports_lock); + BUG_ON(!list_empty(&new->list)); list_add(&new->list, &transports); + spin_unlock(&transports_lock); list_for_each_safe(ele, next, ð_cmd_line){ eth = list_entry(ele, struct eth_init, list); diff --git a/trunk/arch/um/include/net_kern.h b/trunk/arch/um/include/net_kern.h index 218f8b47fdcd..92f76d82a6ef 100644 --- a/trunk/arch/um/include/net_kern.h +++ b/trunk/arch/um/include/net_kern.h @@ -52,12 +52,12 @@ struct net_kern_info { struct transport { struct list_head list; - char *name; - int (*setup)(char *, char **, void *); + const char *name; + int (* const setup)(char *, char **, void *); const struct net_user_info *user; const struct net_kern_info *kern; - int private_size; - int setup_size; + const int private_size; + const int setup_size; }; extern struct net_device *ether_init(int);