I don't know if there is a problem here.  Please check the lines mentiond
below, ie lines 839 and 1003.

julia

---------- Forwarded message ----------
Date: Tue, 11 Sep 2018 17:17:15 +0800
From: kbuild test robot <l...@intel.com>
To: kbu...@01.org
Cc: Julia Lawall <julia.law...@lip6.fr>
Subject: [staging:staging-next 118/220]
    drivers/staging/erofs/unzip_vle.c:1003:1-7: preceding lock on line 839

CC: kbuild-...@01.org
CC: de...@driverdev.osuosl.org
TO: Gao Xiang <gaoxian...@huawei.com>
CC: "Greg Kroah-Hartman" <gre...@linuxfoundation.org>
CC: Chao Yu <yuch...@huawei.com>, Chao Yu <c...@kernel.org>

Hi Gao,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git 
staging-next
head:   7aaaabd50d785e30b290054b3a1b115393927da3
commit: aca19723604c232ffc6376c1c6cd9c8a12158dcc [118/220] Revert "staging: 
erofs: disable compiling temporarile"
:::::: branch date: 17 hours ago
:::::: commit date: 25 hours ago

>> drivers/staging/erofs/unzip_vle.c:1003:1-7: preceding lock on line 839

# 
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git/commit/?id=aca19723604c232ffc6376c1c6cd9c8a12158dcc
git remote add staging 
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
git remote update staging
git checkout aca19723604c232ffc6376c1c6cd9c8a12158dcc
vim +1003 drivers/staging/erofs/unzip_vle.c

3883a79a Gao Xiang 2018-07-26   787
3883a79a Gao Xiang 2018-07-26   788  static int z_erofs_vle_unzip(struct 
super_block *sb,
3883a79a Gao Xiang 2018-07-26   789     struct z_erofs_vle_workgroup *grp,
3883a79a Gao Xiang 2018-07-26   790     struct list_head *page_pool)
3883a79a Gao Xiang 2018-07-26   791  {
3883a79a Gao Xiang 2018-07-26   792     struct erofs_sb_info *const sbi = 
EROFS_SB(sb);
105d4ad8 Gao Xiang 2018-07-26   793  #ifdef EROFS_FS_HAS_MANAGED_CACHE
105d4ad8 Gao Xiang 2018-07-26   794     struct address_space *const mngda = 
sbi->managed_cache->i_mapping;
105d4ad8 Gao Xiang 2018-07-26   795  #endif
3883a79a Gao Xiang 2018-07-26   796     const unsigned clusterpages = 
erofs_clusterpages(sbi);
3883a79a Gao Xiang 2018-07-26   797
3883a79a Gao Xiang 2018-07-26   798     struct z_erofs_pagevec_ctor ctor;
3883a79a Gao Xiang 2018-07-26   799     unsigned nr_pages;
3883a79a Gao Xiang 2018-07-26   800  #ifndef CONFIG_EROFS_FS_ZIP_MULTIREF
3883a79a Gao Xiang 2018-07-26   801     unsigned sparsemem_pages = 0;
3883a79a Gao Xiang 2018-07-26   802  #endif
3883a79a Gao Xiang 2018-07-26   803     struct page 
*pages_onstack[Z_EROFS_VLE_VMAP_ONSTACK_PAGES];
3883a79a Gao Xiang 2018-07-26   804     struct page **pages, 
**compressed_pages, *page;
3883a79a Gao Xiang 2018-07-26   805     unsigned i, llen;
3883a79a Gao Xiang 2018-07-26   806
3883a79a Gao Xiang 2018-07-26   807     enum z_erofs_page_type page_type;
3883a79a Gao Xiang 2018-07-26   808     bool overlapped;
3883a79a Gao Xiang 2018-07-26   809     struct z_erofs_vle_work *work;
3883a79a Gao Xiang 2018-07-26   810     void *vout;
3883a79a Gao Xiang 2018-07-26   811     int err;
3883a79a Gao Xiang 2018-07-26   812
3883a79a Gao Xiang 2018-07-26   813     might_sleep();
3883a79a Gao Xiang 2018-07-26   814  #ifndef CONFIG_EROFS_FS_ZIP_MULTIREF
3883a79a Gao Xiang 2018-07-26   815     work = 
z_erofs_vle_grab_primary_work(grp);
3883a79a Gao Xiang 2018-07-26   816  #else
3883a79a Gao Xiang 2018-07-26   817     BUG();
3883a79a Gao Xiang 2018-07-26   818  #endif
3883a79a Gao Xiang 2018-07-26   819     BUG_ON(!READ_ONCE(work->nr_pages));
3883a79a Gao Xiang 2018-07-26   820
3883a79a Gao Xiang 2018-07-26   821     mutex_lock(&work->lock);
3883a79a Gao Xiang 2018-07-26   822     nr_pages = work->nr_pages;
3883a79a Gao Xiang 2018-07-26   823
3883a79a Gao Xiang 2018-07-26   824     if (likely(nr_pages <= 
Z_EROFS_VLE_VMAP_ONSTACK_PAGES))
3883a79a Gao Xiang 2018-07-26   825             pages = pages_onstack;
3883a79a Gao Xiang 2018-07-26   826     else if (nr_pages <= 
Z_EROFS_VLE_VMAP_GLOBAL_PAGES &&
3883a79a Gao Xiang 2018-07-26   827             
mutex_trylock(&z_pagemap_global_lock))
3883a79a Gao Xiang 2018-07-26   828             pages = z_pagemap_global;
3883a79a Gao Xiang 2018-07-26   829     else {
3883a79a Gao Xiang 2018-07-26   830  repeat:
3883a79a Gao Xiang 2018-07-26   831             pages = kvmalloc_array(nr_pages,
3883a79a Gao Xiang 2018-07-26   832                     sizeof(struct page *), 
GFP_KERNEL);
3883a79a Gao Xiang 2018-07-26   833
3883a79a Gao Xiang 2018-07-26   834             /* fallback to global pagemap 
for the lowmem scenario */
3883a79a Gao Xiang 2018-07-26   835             if (unlikely(pages == NULL)) {
3883a79a Gao Xiang 2018-07-26   836                     if (nr_pages > 
Z_EROFS_VLE_VMAP_GLOBAL_PAGES)
3883a79a Gao Xiang 2018-07-26   837                             goto repeat;
3883a79a Gao Xiang 2018-07-26   838                     else {
3883a79a Gao Xiang 2018-07-26  @839                             
mutex_lock(&z_pagemap_global_lock);
3883a79a Gao Xiang 2018-07-26   840                             pages = 
z_pagemap_global;
3883a79a Gao Xiang 2018-07-26   841                     }
3883a79a Gao Xiang 2018-07-26   842             }
3883a79a Gao Xiang 2018-07-26   843     }
3883a79a Gao Xiang 2018-07-26   844
3883a79a Gao Xiang 2018-07-26   845     for (i = 0; i < nr_pages; ++i)
3883a79a Gao Xiang 2018-07-26   846             pages[i] = NULL;
3883a79a Gao Xiang 2018-07-26   847
3883a79a Gao Xiang 2018-07-26   848     z_erofs_pagevec_ctor_init(&ctor,
3883a79a Gao Xiang 2018-07-26   849             Z_EROFS_VLE_INLINE_PAGEVECS, 
work->pagevec, 0);
3883a79a Gao Xiang 2018-07-26   850
3883a79a Gao Xiang 2018-07-26   851     for (i = 0; i < work->vcnt; ++i) {
3883a79a Gao Xiang 2018-07-26   852             unsigned pagenr;
3883a79a Gao Xiang 2018-07-26   853
3883a79a Gao Xiang 2018-07-26   854             page = 
z_erofs_pagevec_ctor_dequeue(&ctor, &page_type);
3883a79a Gao Xiang 2018-07-26   855
3883a79a Gao Xiang 2018-07-26   856             /* all pages in pagevec ought 
to be valid */
3883a79a Gao Xiang 2018-07-26   857             DBG_BUGON(page == NULL);
3883a79a Gao Xiang 2018-07-26   858             DBG_BUGON(page->mapping == 
NULL);
3883a79a Gao Xiang 2018-07-26   859
3883a79a Gao Xiang 2018-07-26   860             if 
(z_erofs_gather_if_stagingpage(page_pool, page))
3883a79a Gao Xiang 2018-07-26   861                     continue;
3883a79a Gao Xiang 2018-07-26   862
3883a79a Gao Xiang 2018-07-26   863             if (page_type == 
Z_EROFS_VLE_PAGE_TYPE_HEAD)
3883a79a Gao Xiang 2018-07-26   864                     pagenr = 0;
3883a79a Gao Xiang 2018-07-26   865             else
3883a79a Gao Xiang 2018-07-26   866                     pagenr = 
z_erofs_onlinepage_index(page);
3883a79a Gao Xiang 2018-07-26   867
3883a79a Gao Xiang 2018-07-26   868             BUG_ON(pagenr >= nr_pages);
3883a79a Gao Xiang 2018-07-26   869
3883a79a Gao Xiang 2018-07-26   870  #ifndef CONFIG_EROFS_FS_ZIP_MULTIREF
3883a79a Gao Xiang 2018-07-26   871             BUG_ON(pages[pagenr] != NULL);
3883a79a Gao Xiang 2018-07-26   872             ++sparsemem_pages;
3883a79a Gao Xiang 2018-07-26   873  #endif
3883a79a Gao Xiang 2018-07-26   874             pages[pagenr] = page;
3883a79a Gao Xiang 2018-07-26   875     }
3883a79a Gao Xiang 2018-07-26   876
3883a79a Gao Xiang 2018-07-26   877     z_erofs_pagevec_ctor_exit(&ctor, true);
3883a79a Gao Xiang 2018-07-26   878
3883a79a Gao Xiang 2018-07-26   879     overlapped = false;
3883a79a Gao Xiang 2018-07-26   880     compressed_pages = 
grp->compressed_pages;
3883a79a Gao Xiang 2018-07-26   881
3883a79a Gao Xiang 2018-07-26   882     for (i = 0; i < clusterpages; ++i) {
3883a79a Gao Xiang 2018-07-26   883             unsigned pagenr;
3883a79a Gao Xiang 2018-07-26   884
3883a79a Gao Xiang 2018-07-26   885             page = compressed_pages[i];
3883a79a Gao Xiang 2018-07-26   886
3883a79a Gao Xiang 2018-07-26   887             /* all compressed pages ought 
to be valid */
3883a79a Gao Xiang 2018-07-26   888             DBG_BUGON(page == NULL);
3883a79a Gao Xiang 2018-07-26   889             DBG_BUGON(page->mapping == 
NULL);
3883a79a Gao Xiang 2018-07-26   890
3883a79a Gao Xiang 2018-07-26   891             if 
(z_erofs_is_stagingpage(page))
3883a79a Gao Xiang 2018-07-26   892                     continue;
105d4ad8 Gao Xiang 2018-07-26   893  #ifdef EROFS_FS_HAS_MANAGED_CACHE
105d4ad8 Gao Xiang 2018-07-26   894             else if (page->mapping == 
mngda) {
105d4ad8 Gao Xiang 2018-07-26   895                     
BUG_ON(PageLocked(page));
105d4ad8 Gao Xiang 2018-07-26   896                     
BUG_ON(!PageUptodate(page));
105d4ad8 Gao Xiang 2018-07-26   897                     continue;
105d4ad8 Gao Xiang 2018-07-26   898             }
105d4ad8 Gao Xiang 2018-07-26   899  #endif
3883a79a Gao Xiang 2018-07-26   900
3883a79a Gao Xiang 2018-07-26   901             /* only non-head page could be 
reused as a compressed page */
3883a79a Gao Xiang 2018-07-26   902             pagenr = 
z_erofs_onlinepage_index(page);
3883a79a Gao Xiang 2018-07-26   903
3883a79a Gao Xiang 2018-07-26   904             BUG_ON(pagenr >= nr_pages);
3883a79a Gao Xiang 2018-07-26   905  #ifndef CONFIG_EROFS_FS_ZIP_MULTIREF
3883a79a Gao Xiang 2018-07-26   906             BUG_ON(pages[pagenr] != NULL);
3883a79a Gao Xiang 2018-07-26   907             ++sparsemem_pages;
3883a79a Gao Xiang 2018-07-26   908  #endif
3883a79a Gao Xiang 2018-07-26   909             pages[pagenr] = page;
3883a79a Gao Xiang 2018-07-26   910
3883a79a Gao Xiang 2018-07-26   911             overlapped = true;
3883a79a Gao Xiang 2018-07-26   912     }
3883a79a Gao Xiang 2018-07-26   913
3883a79a Gao Xiang 2018-07-26   914     llen = (nr_pages << PAGE_SHIFT) - 
work->pageofs;
3883a79a Gao Xiang 2018-07-26   915
3883a79a Gao Xiang 2018-07-26   916     if (z_erofs_vle_workgrp_fmt(grp) == 
Z_EROFS_VLE_WORKGRP_FMT_PLAIN) {
3883a79a Gao Xiang 2018-07-26   917             /* FIXME! this should be fixed 
in the future */
3883a79a Gao Xiang 2018-07-26   918             BUG_ON(grp->llen != llen);
3883a79a Gao Xiang 2018-07-26   919
3883a79a Gao Xiang 2018-07-26   920             err = 
z_erofs_vle_plain_copy(compressed_pages, clusterpages,
3883a79a Gao Xiang 2018-07-26   921                     pages, nr_pages, 
work->pageofs);
3883a79a Gao Xiang 2018-07-26   922             goto out;
3883a79a Gao Xiang 2018-07-26   923     }
3883a79a Gao Xiang 2018-07-26   924
3883a79a Gao Xiang 2018-07-26   925     if (llen > grp->llen)
3883a79a Gao Xiang 2018-07-26   926             llen = grp->llen;
3883a79a Gao Xiang 2018-07-26   927
3883a79a Gao Xiang 2018-07-26   928     err = 
z_erofs_vle_unzip_fast_percpu(compressed_pages,
3883a79a Gao Xiang 2018-07-26   929             clusterpages, pages, llen, 
work->pageofs,
3883a79a Gao Xiang 2018-07-26   930             z_erofs_onlinepage_endio);
3883a79a Gao Xiang 2018-07-26   931     if (err != -ENOTSUPP)
3883a79a Gao Xiang 2018-07-26   932             goto out_percpu;
3883a79a Gao Xiang 2018-07-26   933
3883a79a Gao Xiang 2018-07-26   934  #ifndef CONFIG_EROFS_FS_ZIP_MULTIREF
3883a79a Gao Xiang 2018-07-26   935     if (sparsemem_pages >= nr_pages) {
3883a79a Gao Xiang 2018-07-26   936             BUG_ON(sparsemem_pages > 
nr_pages);
3883a79a Gao Xiang 2018-07-26   937             goto skip_allocpage;
3883a79a Gao Xiang 2018-07-26   938     }
3883a79a Gao Xiang 2018-07-26   939  #endif
3883a79a Gao Xiang 2018-07-26   940
3883a79a Gao Xiang 2018-07-26   941     for (i = 0; i < nr_pages; ++i) {
3883a79a Gao Xiang 2018-07-26   942             if (pages[i] != NULL)
3883a79a Gao Xiang 2018-07-26   943                     continue;
3883a79a Gao Xiang 2018-07-26   944
3883a79a Gao Xiang 2018-07-26   945             pages[i] = 
__stagingpage_alloc(page_pool, GFP_NOFS);
3883a79a Gao Xiang 2018-07-26   946     }
3883a79a Gao Xiang 2018-07-26   947
3883a79a Gao Xiang 2018-07-26   948  #ifndef CONFIG_EROFS_FS_ZIP_MULTIREF
3883a79a Gao Xiang 2018-07-26   949  skip_allocpage:
3883a79a Gao Xiang 2018-07-26   950  #endif
3883a79a Gao Xiang 2018-07-26   951     vout = erofs_vmap(pages, nr_pages);
3883a79a Gao Xiang 2018-07-26   952
3883a79a Gao Xiang 2018-07-26   953     err = 
z_erofs_vle_unzip_vmap(compressed_pages,
3883a79a Gao Xiang 2018-07-26   954             clusterpages, vout, llen, 
work->pageofs, overlapped);
3883a79a Gao Xiang 2018-07-26   955
3883a79a Gao Xiang 2018-07-26   956     erofs_vunmap(vout, nr_pages);
3883a79a Gao Xiang 2018-07-26   957
3883a79a Gao Xiang 2018-07-26   958  out:
3883a79a Gao Xiang 2018-07-26   959     for (i = 0; i < nr_pages; ++i) {
3883a79a Gao Xiang 2018-07-26   960             page = pages[i];
3883a79a Gao Xiang 2018-07-26   961             DBG_BUGON(page->mapping == 
NULL);
3883a79a Gao Xiang 2018-07-26   962
3883a79a Gao Xiang 2018-07-26   963             /* recycle all individual 
staging pages */
3883a79a Gao Xiang 2018-07-26   964             if 
(z_erofs_gather_if_stagingpage(page_pool, page))
3883a79a Gao Xiang 2018-07-26   965                     continue;
3883a79a Gao Xiang 2018-07-26   966
3883a79a Gao Xiang 2018-07-26   967             if (unlikely(err < 0))
3883a79a Gao Xiang 2018-07-26   968                     SetPageError(page);
3883a79a Gao Xiang 2018-07-26   969
3883a79a Gao Xiang 2018-07-26   970             z_erofs_onlinepage_endio(page);
3883a79a Gao Xiang 2018-07-26   971     }
3883a79a Gao Xiang 2018-07-26   972
3883a79a Gao Xiang 2018-07-26   973  out_percpu:
3883a79a Gao Xiang 2018-07-26   974     for (i = 0; i < clusterpages; ++i) {
3883a79a Gao Xiang 2018-07-26   975             page = compressed_pages[i];
3883a79a Gao Xiang 2018-07-26   976
105d4ad8 Gao Xiang 2018-07-26   977  #ifdef EROFS_FS_HAS_MANAGED_CACHE
105d4ad8 Gao Xiang 2018-07-26   978             if (page->mapping == mngda)
105d4ad8 Gao Xiang 2018-07-26   979                     continue;
105d4ad8 Gao Xiang 2018-07-26   980  #endif
3883a79a Gao Xiang 2018-07-26   981             /* recycle all individual 
staging pages */
3883a79a Gao Xiang 2018-07-26   982             
(void)z_erofs_gather_if_stagingpage(page_pool, page);
3883a79a Gao Xiang 2018-07-26   983
3883a79a Gao Xiang 2018-07-26   984             WRITE_ONCE(compressed_pages[i], 
NULL);
3883a79a Gao Xiang 2018-07-26   985     }
3883a79a Gao Xiang 2018-07-26   986
3883a79a Gao Xiang 2018-07-26   987     if (pages == z_pagemap_global)
3883a79a Gao Xiang 2018-07-26   988             
mutex_unlock(&z_pagemap_global_lock);
3883a79a Gao Xiang 2018-07-26   989     else if (unlikely(pages != 
pages_onstack))
3883a79a Gao Xiang 2018-07-26   990             kvfree(pages);
3883a79a Gao Xiang 2018-07-26   991
3883a79a Gao Xiang 2018-07-26   992     work->nr_pages = 0;
3883a79a Gao Xiang 2018-07-26   993     work->vcnt = 0;
3883a79a Gao Xiang 2018-07-26   994
3883a79a Gao Xiang 2018-07-26   995     /* all work locks MUST be taken before 
the following line */
3883a79a Gao Xiang 2018-07-26   996
3883a79a Gao Xiang 2018-07-26   997     WRITE_ONCE(grp->next, 
Z_EROFS_VLE_WORKGRP_NIL);
3883a79a Gao Xiang 2018-07-26   998
3883a79a Gao Xiang 2018-07-26   999     /* all work locks SHOULD be released 
right now */
3883a79a Gao Xiang 2018-07-26  1000     mutex_unlock(&work->lock);
3883a79a Gao Xiang 2018-07-26  1001
3883a79a Gao Xiang 2018-07-26  1002     z_erofs_vle_work_release(work);
3883a79a Gao Xiang 2018-07-26 @1003     return err;
3883a79a Gao Xiang 2018-07-26  1004  }
3883a79a Gao Xiang 2018-07-26  1005

:::::: The code at line 1003 was first introduced by commit
:::::: 3883a79abd02272222a214a5f84395d41eecdc84 staging: erofs: introduce VLE 
decompression support

:::::: TO: Gao Xiang <gaoxian...@huawei.com>
:::::: 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