Linux-Next Archive on lore.kernel.org
 help / color / Atom feed
* Coverity: io_wqe_worker(): Program hangs
@ 2019-10-28 23:05 coverity-bot
  2019-10-28 23:27 ` Jens Axboe
  0 siblings, 1 reply; 5+ messages in thread
From: coverity-bot @ 2019-10-28 23:05 UTC (permalink / raw)
  To: Jens Axboe; +Cc: Gustavo A. R. Silva, linux-next

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:

Reported-by: coverity-bot <keescook+coverity-bot@chromium.org>
Addresses-Coverity-ID: 1487365 ("Program hangs")
Fixes: 46134db8fdc5 ("io-wq: small threadpool implementation for io_uring")


Thanks for your attention!

-- 
Coverity-bot

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Coverity: io_wqe_worker(): Program hangs
  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
  0 siblings, 1 reply; 5+ messages in thread
From: Jens Axboe @ 2019-10-28 23:27 UTC (permalink / raw)
  To: coverity-bot; +Cc: Gustavo A. R. Silva, linux-next

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.

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Coverity: io_wqe_worker(): Program hangs
  2019-10-28 23:27 ` Jens Axboe
@ 2019-10-28 23:30   ` Kees Cook
  2019-10-28 23:35     ` Jens Axboe
  0 siblings, 1 reply; 5+ messages in thread
From: Kees Cook @ 2019-10-28 23:30 UTC (permalink / raw)
  To: Jens Axboe; +Cc: Gustavo A. R. Silva, linux-next

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Coverity: io_wqe_worker(): Program hangs
  2019-10-28 23:30   ` Kees Cook
@ 2019-10-28 23:35     ` Jens Axboe
  2019-10-29 16:11       ` Kees Cook
  0 siblings, 1 reply; 5+ messages in thread
From: Jens Axboe @ 2019-10-28 23:35 UTC (permalink / raw)
  To: Kees Cook; +Cc: Gustavo A. R. Silva, linux-next

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.

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Coverity: io_wqe_worker(): Program hangs
  2019-10-28 23:35     ` Jens Axboe
@ 2019-10-29 16:11       ` Kees Cook
  0 siblings, 0 replies; 5+ messages in thread
From: Kees Cook @ 2019-10-29 16:11 UTC (permalink / raw)
  To: Jens Axboe; +Cc: Gustavo A. R. Silva, linux-next

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, back to index

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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

Linux-Next Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-next/0 linux-next/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-next linux-next/ https://lore.kernel.org/linux-next \
		linux-next@vger.kernel.org
	public-inbox-index linux-next

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-next


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git