Subject: Coverity: erofs_get_pcpubuf(): Program hangs

From: coverity-bot <[email-masked]>
Date: Thu, 8 Apr 2021 17:09:53 -0700

Hello!

This is an experimental semi-automated report about issues detected by
Coverity from a scan of next-20210408 as part of the linux-next 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 commits:

  Wed Apr 7 12:41:22 2021 +0800
    91a196935395 ("erofs: introduce multipage per-CPU buffers")

Coverity reported the following:

*** CID 1503700:  Program hangs  (LOCK)
/fs/erofs/pcpubuf.c: 31 in erofs_get_pcpubuf()
25     	raw_spin_lock(&pcb->lock);
26     	if (requiredpages > pcb->nrpages) {
27     		raw_spin_unlock(&pcb->lock);
28     		put_cpu_var(erofs_pcb);
29     		return NULL;
30     	}
vvv     CID 1503700:  Program hangs  (LOCK)
vvv     Returning without unlocking "pcb->lock".
31     	return pcb->ptr;
32     }
33
34     void erofs_put_pcpubuf(void *ptr)
35     {
36     	struct erofs_pcpubuf *pcb = &per_cpu(erofs_pcb, smp_processor_id());

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 these lines (but double-check the "Fixes" first):

Reported-by: coverity-bot <[email-masked]>
Addresses-Coverity-ID: 1503700 ("Program hangs")
Fixes: 91a196935395 ("erofs: introduce multipage per-CPU buffers")

Thanks for your attention!

-- 
Coverity-bot