Re: [PATCH net-next V2 3/3] tun: rx batching

From: Jason Wang
Date: Tue Jan 03 2017 - 22:04:27 EST




On 2017å01æ03æ 21:33, Stefan Hajnoczi wrote:
On Wed, Dec 28, 2016 at 04:09:31PM +0800, Jason Wang wrote:
+static int tun_rx_batched(struct tun_file *tfile, struct sk_buff *skb,
+ int more)
+{
+ struct sk_buff_head *queue = &tfile->sk.sk_write_queue;
+ struct sk_buff_head process_queue;
+ int qlen;
+ bool rcv = false;
+
+ spin_lock(&queue->lock);
Should this be spin_lock_bh()? Below and in tun_get_user() there are
explicit local_bh_disable() calls so I guess BHs can interrupt us here
and this would deadlock.

sk_write_queue were accessed only in this function which runs under process context, so no need for spin_lock_bh() here.