Subject: Re: Coverity: io_wqe_worker(): Program hangs

From: Kees Cook <[email-masked]>
Date: Mon, 28 Oct 2019 16:30:19 -0700

On Mon, Oct 28, 2019 at 05:27:59PM -0600, Jens Axboe wrote:
> On 10/28/19 5:05 PM, coverity-bot wrote:
> > Hello!
> > 
> > This is an experimental automated report about issues detected by Coverity
> > from a scan of next-20191025 as part of the linux-next weekly scan project:
> > https://scan.coverity.com/projects/linux-next-weekly-scan
> > 
> > You're getting this email because you were associated with the identified
> > lines of code (noted below) that were touched by recent commits:
> > 
> > 46134db8fdc5 ("io-wq: small threadpool implementation for io_uring")
> > 
> > Coverity reported the following:
> > 
> > *** CID 1487365:  Program hangs  (LOCK)
> > /fs/io-wq.c: 349 in io_wqe_worker()
> > 343     			io_worker_handle_work(worker);
> > 344     		else
> > 345     			spin_unlock(&wqe->lock);
> > 346     	}
> > 347
> > 348     	io_worker_exit(worker);
> > vvv     CID 1487365:  Program hangs  (LOCK)
> > vvv     Returning without unlocking "(*wqe).lock".
> > 349     	return 0;
> > 350     }
> > 351
> > 352     /*
> > 353      * Check head of free list for an available worker. If one isn't available,
> > 354      * caller must wake up the wq manager to create one.
> > 
> > If this is a false positive, please let us know so we can mark it as
> > such, or teach the Coverity rules to be smarter. If not, please make
> > sure fixes get into linux-next. :) For patches fixing this, please
> > include:
> 
> It's a false positive, lock is dropped on non-zero return.

Does that happen in the caller side? I'll see if I can figure out how to
teach coverity about that... Hmmm

Thanks!

-- 
Kees Cook