diff options
Diffstat (limited to 'drivers/net/hamradio/bpqether.c')
| -rw-r--r-- | drivers/net/hamradio/bpqether.c | 9 | 
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/net/hamradio/bpqether.c b/drivers/net/hamradio/bpqether.c index 1756f0ed54c..cb43a9d2877 100644 --- a/drivers/net/hamradio/bpqether.c +++ b/drivers/net/hamradio/bpqether.c @@ -144,7 +144,7 @@ static inline struct net_device *bpq_get_ax25_dev(struct net_device *dev)  {  	struct bpqdev *bpq; -	list_for_each_entry(bpq, &bpq_devices, bpq_list) { +	list_for_each_entry_rcu(bpq, &bpq_devices, bpq_list) {  		if (bpq->ethdev == dev)  			return bpq->axdev;  	} @@ -399,7 +399,7 @@ static void *bpq_seq_start(struct seq_file *seq, loff_t *pos)  	if (*pos == 0)  		return SEQ_START_TOKEN; -	list_for_each_entry(bpqdev, &bpq_devices, bpq_list) { +	list_for_each_entry_rcu(bpqdev, &bpq_devices, bpq_list) {  		if (i == *pos)  			return bpqdev;  	} @@ -418,7 +418,7 @@ static void *bpq_seq_next(struct seq_file *seq, void *v, loff_t *pos)  		p = ((struct bpqdev *)v)->bpq_list.next;  	return (p == &bpq_devices) ? NULL  -		: list_entry(p, struct bpqdev, bpq_list); +		: rcu_dereference(list_entry(p, struct bpqdev, bpq_list));  }  static void bpq_seq_stop(struct seq_file *seq, void *v) @@ -561,8 +561,6 @@ static int bpq_device_event(struct notifier_block *this,unsigned long event, voi  	if (!dev_is_ethdev(dev))  		return NOTIFY_DONE; -	rcu_read_lock(); -  	switch (event) {  	case NETDEV_UP:		/* new ethernet device -> new BPQ interface */  		if (bpq_get_ax25_dev(dev) == NULL) @@ -581,7 +579,6 @@ static int bpq_device_event(struct notifier_block *this,unsigned long event, voi  	default:  		break;  	} -	rcu_read_unlock();  	return NOTIFY_DONE;  }  | 
