staging: erofs: replace BUG_ON with DBG_BUGON in data.c
authorChen Gong <gongchen4@huawei.com>
Tue, 18 Sep 2018 14:27:28 +0000 (22:27 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 27 Feb 2019 09:09:01 +0000 (10:09 +0100)
commit 9141b60cf6a53c99f8a9309bf8e1c6650a6785c1 upstream.

This patch replace BUG_ON with DBG_BUGON in data.c, and add necessary
error handler.

Signed-off-by: Chen Gong <gongchen4@huawei.com>
Reviewed-by: Gao Xiang <gaoxiang25@huawei.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Gao Xiang <gaoxiang25@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/erofs/data.c

index ac263a1..894e60e 100644 (file)
@@ -25,7 +25,7 @@ static inline void read_endio(struct bio *bio)
                struct page *page = bvec->bv_page;
 
                /* page is already locked */
-               BUG_ON(PageUptodate(page));
+               DBG_BUGON(PageUptodate(page));
 
                if (unlikely(err))
                        SetPageError(page);
@@ -91,12 +91,12 @@ static int erofs_map_blocks_flatmode(struct inode *inode,
        struct erofs_map_blocks *map,
        int flags)
 {
+       int err = 0;
        erofs_blk_t nblocks, lastblk;
        u64 offset = map->m_la;
        struct erofs_vnode *vi = EROFS_V(inode);
 
        trace_erofs_map_blocks_flatmode_enter(inode, map, flags);
-       BUG_ON(is_inode_layout_compression(inode));
 
        nblocks = DIV_ROUND_UP(inode->i_size, PAGE_SIZE);
        lastblk = nblocks - is_inode_layout_inline(inode);
@@ -123,18 +123,27 @@ static int erofs_map_blocks_flatmode(struct inode *inode,
                map->m_plen = inode->i_size - offset;
 
                /* inline data should locate in one meta block */
-               BUG_ON(erofs_blkoff(map->m_pa) + map->m_plen > PAGE_SIZE);
+               if (erofs_blkoff(map->m_pa) + map->m_plen > PAGE_SIZE) {
+                       DBG_BUGON(1);
+                       err = -EIO;
+                       goto err_out;
+               }
+
                map->m_flags |= EROFS_MAP_META;
        } else {
                errln("internal error @ nid: %llu (size %llu), m_la 0x%llx",
                        vi->nid, inode->i_size, map->m_la);
-               BUG();
+               DBG_BUGON(1);
+               err = -EIO;
+               goto err_out;
        }
 
 out:
        map->m_llen = map->m_plen;
+
+err_out:
        trace_erofs_map_blocks_flatmode_exit(inode, map, flags, 0);
-       return 0;
+       return err;
 }
 
 #ifdef CONFIG_EROFS_FS_ZIP
@@ -190,7 +199,7 @@ static inline struct bio *erofs_read_raw_page(
        erofs_off_t current_block = (erofs_off_t)page->index;
        int err;
 
-       BUG_ON(!nblocks);
+       DBG_BUGON(!nblocks);
 
        if (PageUptodate(page)) {
                err = 0;
@@ -233,7 +242,7 @@ submit_bio_retry:
                }
 
                /* for RAW access mode, m_plen must be equal to m_llen */
-               BUG_ON(map.m_plen != map.m_llen);
+               DBG_BUGON(map.m_plen != map.m_llen);
 
                blknr = erofs_blknr(map.m_pa);
                blkoff = erofs_blkoff(map.m_pa);
@@ -243,7 +252,7 @@ submit_bio_retry:
                        void *vsrc, *vto;
                        struct page *ipage;
 
-                       BUG_ON(map.m_plen > PAGE_SIZE);
+                       DBG_BUGON(map.m_plen > PAGE_SIZE);
 
                        ipage = erofs_get_meta_page(inode->i_sb, blknr, 0);
 
@@ -270,7 +279,7 @@ submit_bio_retry:
                }
 
                /* pa must be block-aligned for raw reading */
-               BUG_ON(erofs_blkoff(map.m_pa) != 0);
+               DBG_BUGON(erofs_blkoff(map.m_pa));
 
                /* max # of continuous pages */
                if (nblocks > DIV_ROUND_UP(map.m_plen, PAGE_SIZE))
@@ -331,7 +340,7 @@ static int erofs_raw_access_readpage(struct file *file, struct page *page)
        if (IS_ERR(bio))
                return PTR_ERR(bio);
 
-       BUG_ON(bio != NULL);    /* since we have only one bio -- must be NULL */
+       DBG_BUGON(bio); /* since we have only one bio -- must be NULL */
        return 0;
 }
 
@@ -369,7 +378,7 @@ static int erofs_raw_access_readpages(struct file *filp,
                /* pages could still be locked */
                put_page(page);
        }
-       BUG_ON(!list_empty(pages));
+       DBG_BUGON(!list_empty(pages));
 
        /* the rare case (end in gaps) */
        if (unlikely(bio != NULL))