diff --git a/net/rose/af_rose.c b/net/rose/af_rose.c index d00a0ef39a56b38cae4114654c44a3bddccb35ba..6d3a0ed14706dc40e760255d5b25819760de179b 100644 --- a/net/rose/af_rose.c +++ b/net/rose/af_rose.c @@ -1293,9 +1293,11 @@ static int rose_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) case TIOCINQ: { struct sk_buff *skb; long amount = 0L; - /* These two are safe on a single CPU system as only user tasks fiddle here */ + + spin_lock_irq(&sk->sk_receive_queue.lock); if ((skb = skb_peek(&sk->sk_receive_queue)) != NULL) amount = skb->len; + spin_unlock_irq(&sk->sk_receive_queue.lock); return put_user(amount, (unsigned int __user *) argp); }