Coverity: erofs_get_pcpubuf(): Program hangs
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")
Thanks for your attention!
Signature · 1 line
Coverity-bot
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-scanYou'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 inerofs_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 returnpcb->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
Reported-by coverity-bot <[email protected]>Addresses-Coverity-ID: 1503700 ("Program hangs")
Fixes 91a196935395 ("erofs: introduce multipage per-CPU buffers")Thanks for your attention!
Signature · 1 line
Coverity-bot