The return at line 747 may need an unlock.

julia

---------- Forwarded message ----------
Date: Sun, 3 Nov 2019 09:21:22 +0800
From: kbuild test robot <l...@intel.com>
To: kbu...@lists.01.org
Cc: Julia Lawall <julia.law...@lip6.fr>
Subject: [staging:staging-testing 275/291]
    drivers/staging/exfat/exfat_super.c:747:5-11: preceding lock on line 707

CC: kbuild-...@lists.01.org
CC: de...@driverdev.osuosl.org
TO: Davidlohr Bueso <d...@stgolabs.net>
CC: "Greg Kroah-Hartman" <gre...@linuxfoundation.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git 
staging-testing
head:   f6ea634f1c01cb75675481318930985d6073632a
commit: 3ae82f449cea00de5cd894feb8e9154b2da99b4e [275/291] 
drivers/staging/exfat: Replace binary semaphores for mutexes
:::::: branch date: 15 hours ago
:::::: commit date: 2 days ago

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <l...@intel.com>
Reported-by: Julia Lawall <julia.law...@lip6.fr>

>> drivers/staging/exfat/exfat_super.c:747:5-11: preceding lock on line 707

# 
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git/commit/?id=3ae82f449cea00de5cd894feb8e9154b2da99b4e
git remote add staging 
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
git remote update staging
git checkout 3ae82f449cea00de5cd894feb8e9154b2da99b4e
vim +747 drivers/staging/exfat/exfat_super.c

c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  684
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  685  static int ffsReadFile(struct 
inode *inode, struct file_id_t *fid, void *buffer,
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  686                        u64 
count, u64 *rcount)
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  687  {
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  688         s32 offset, sec_offset, 
clu_offset;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  689         u32 clu;
076a8e2f769e87 Colin Ian King   2019-08-30  690         int ret = 0;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  691         sector_t LogSector;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  692         u64 oneblkread, 
read_bytes;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  693         struct buffer_head 
*tmp_bh = NULL;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  694         struct super_block *sb 
= inode->i_sb;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  695         struct fs_info_t *p_fs 
= &(EXFAT_SB(sb)->fs_info);
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  696         struct bd_info_t *p_bd 
= &(EXFAT_SB(sb)->bd_info);
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  697
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  698         /* check the validity 
of the given file id */
3b531807e605bf Valentin Vidic   2019-09-03  699         if (!fid)
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  700                 return 
FFS_INVALIDFID;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  701
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  702         /* check the validity 
of pointer parameters */
3b531807e605bf Valentin Vidic   2019-09-03  703         if (!buffer)
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  704                 return 
FFS_ERROR;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  705
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  706         /* acquire the lock for 
file system critical section */
3ae82f449cea00 Davidlohr Bueso  2019-10-30 @707         
mutex_lock(&p_fs->v_mutex);
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  708
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  709         /* check if the given 
file ID is opened */
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  710         if (fid->type != 
TYPE_FILE) {
7ca8049f098070 Valdis Kletnieks 2019-10-24  711                 ret = -EPERM;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  712                 goto out;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  713         }
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  714
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  715         if (fid->rwoffset > 
fid->size)
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  716                 fid->rwoffset = 
fid->size;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  717
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  718         if (count > (fid->size 
- fid->rwoffset))
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  719                 count = 
fid->size - fid->rwoffset;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  720
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  721         if (count == 0) {
3b531807e605bf Valentin Vidic   2019-09-03  722                 if (rcount)
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  723                         *rcount 
= 0;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  724                 ret = FFS_EOF;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  725                 goto out;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  726         }
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  727
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  728         read_bytes = 0;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  729
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  730         while (count > 0) {
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  731                 clu_offset = 
(s32)(fid->rwoffset >> p_fs->cluster_size_bits);
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  732                 clu = 
fid->start_clu;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  733
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  734                 if (fid->flags 
== 0x03) {
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  735                         clu += 
clu_offset;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  736                 } else {
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  737                         /* hint 
information */
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  738                         if 
((clu_offset > 0) && (fid->hint_last_off > 0) &&
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  739                             
(clu_offset >= fid->hint_last_off)) {
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  740                                 
clu_offset -= fid->hint_last_off;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  741                                 
clu = fid->hint_last_clu;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  742                         }
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  743
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  744                         while 
(clu_offset > 0) {
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  745                                 
/* clu = FAT_read(sb, clu); */
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  746                                 
if (FAT_read(sb, clu, &clu) == -1)
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28 @747                                 
        return FFS_MEDIAERR;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  748
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  749                                 
clu_offset--;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  750                         }
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  751                 }
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  752
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  753                 /* hint 
information */
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  754                 
fid->hint_last_off = (s32)(fid->rwoffset >>
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  755                                 
           p_fs->cluster_size_bits);
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  756                 
fid->hint_last_clu = clu;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  757
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  758                 /* byte offset 
in cluster */
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  759                 offset = 
(s32)(fid->rwoffset & (p_fs->cluster_size - 1));
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  760
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  761                 /* sector 
offset in cluster */
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  762                 sec_offset = 
offset >> p_bd->sector_size_bits;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  763
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  764                 /* byte offset 
in sector */
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  765                 offset &= 
p_bd->sector_size_mask;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  766
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  767                 LogSector = 
START_SECTOR(clu) + sec_offset;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  768
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  769                 oneblkread = 
(u64)(p_bd->sector_size - offset);
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  770                 if (oneblkread 
> count)
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  771                         
oneblkread = count;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  772
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  773                 if ((offset == 
0) && (oneblkread == p_bd->sector_size)) {
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  774                         if 
(sector_read(sb, LogSector, &tmp_bh, 1) !=
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  775                             
FFS_SUCCESS)
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  776                                 
goto err_out;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  777                         
memcpy((char *)buffer + read_bytes,
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  778                                
(char *)tmp_bh->b_data, (s32)oneblkread);
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  779                 } else {
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  780                         if 
(sector_read(sb, LogSector, &tmp_bh, 1) !=
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  781                             
FFS_SUCCESS)
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  782                                 
goto err_out;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  783                         
memcpy((char *)buffer + read_bytes,
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  784                                
(char *)tmp_bh->b_data + offset,
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  785                                
(s32)oneblkread);
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  786                 }
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  787                 count -= 
oneblkread;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  788                 read_bytes += 
oneblkread;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  789                 fid->rwoffset 
+= oneblkread;
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  790         }
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  791         brelse(tmp_bh);
c48c9f7ff32b8b Valdis Kletnieks 2019-08-28  792

:::::: The code at line 747 was first introduced by commit
:::::: c48c9f7ff32b8b3965a08e40eb6763682d905b5d staging: exfat: add exfat 
filesystem code to staging

:::::: TO: Valdis Klētnieks <valdis.kletni...@vt.edu>
:::::: CC: Greg Kroah-Hartman <gre...@linuxfoundation.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to