All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kees Cook <keescook@chromium.org>
To: Jens Axboe <axboe@kernel.dk>
Cc: "Gustavo A. R. Silva" <gustavo@embeddedor.com>,
	linux-next@vger.kernel.org
Subject: Re: Coverity: io_wqe_worker(): Program hangs
Date: Tue, 29 Oct 2019 09:11:13 -0700	[thread overview]
Message-ID: <201910290910.29320BE326@keescook> (raw)
In-Reply-To: <7fdaef1a-6c7a-46df-f84b-4d05cca16fca@kernel.dk>

On Mon, Oct 28, 2019 at 05:35:15PM -0600, Jens Axboe wrote:
> On 10/28/19 5:30 PM, Kees Cook wrote:
> > 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
> 
> I was trying to use the right incantations of __release() etc to shut up
> the checker as well. So if there are things I could be improving on that
> side, do let me know.
> 
> As mentioned in other emails, the linux-next version is somewhat outdated
> at this point. My for-next branch has the latest version.

Yeah, I think I see Coverity's confusion: this code is the work queue
runner, IIUC, so the locking is pretty special. I'll try to see if there
is a way to improve this.

-- 
Kees Cook

      reply	other threads:[~2019-10-29 16:11 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-28 23:05 Coverity: io_wqe_worker(): Program hangs coverity-bot
2019-10-28 23:27 ` Jens Axboe
2019-10-28 23:30   ` Kees Cook
2019-10-28 23:35     ` Jens Axboe
2019-10-29 16:11       ` Kees Cook [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201910290910.29320BE326@keescook \
    --to=keescook@chromium.org \
    --cc=axboe@kernel.dk \
    --cc=gustavo@embeddedor.com \
    --cc=linux-next@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.