Skip to contentSkip to conversation

Coverity: erofs_get_pcpubuf(): Program hangs

DISCUSSION coverity-bot 2 participants 2 messages Apr 9, 2021 Linux-next tree

lore
Share & tools
lore
#0 lore raw

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):

Addresses-Coverity-ID: 1503700 ("Program hangs")

Fixes 91a196935395 ("erofs: introduce multipage per-CPU buffers")

Thanks for your attention!

Signature · 1 line
Coverity-bot
#1 lore raw

Hi,

Quoted 27 lines · coverity-bot

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

Quoted 8 lines
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):

I think this is a false positive here, since erofs_get_pcpubuf() should match with erofs_put_pcpubuf(), which is used to unlock pcb->lock.

Thanks,
Gao Xiang

Quoted 10 lines

Addresses-Coverity-ID: 1503700 ("Program hangs")

Fixes 91a196935395 ("erofs: introduce multipage per-CPU buffers")

Thanks for your attention!

Signature · 1 line
Coverity-bot