1. 21 Aug, 2019 14 commits
    • Gao Xiang's avatar
      staging: erofs: detect potential multiref due to corrupted images · e12a0ce2
      Gao Xiang authored
      As reported by erofs-utils fuzzer, currently, multiref
      (ondisk deduplication) hasn't been supported for now,
      we should forbid it properly.
      
      Fixes: 3883a79a ("staging: erofs: introduce VLE decompression support")
      Cc: <stable@vger.kernel.org> # 4.19+
      Signed-off-by: default avatarGao Xiang <gaoxiang25@huawei.com>
      Reviewed-by: default avatarChao Yu <yuchao0@huawei.com>
      Link: https://lore.kernel.org/r/20190821140152.229648-1-gaoxiang25@huawei.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e12a0ce2
    • Colin Ian King's avatar
      staging: rts5208: remove redundant assignment to retval · 8467c3b4
      Colin Ian King authored
      Variable retval is initialized to a value that is never read and it
      is re-assigned later. The initialization is redundant and can be
      removed.
      
      Addresses-Coverity: ("Unused value")
      Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
      Link: https://lore.kernel.org/r/20190818184649.13828-1-colin.king@canonical.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8467c3b4
    • Eduardo Barretto's avatar
      staging: kpc2000: kpc2000_i2c: Fix different address spaces warnings · 1327d35a
      Eduardo Barretto authored
      This patch fixes the following sparse warnings:
      
      kpc2000_i2c.c:137: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:137:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:137:    got void *
      kpc2000_i2c.c:146: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:146:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:146:    got void *
      kpc2000_i2c.c:147: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:147:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:147:    got void *
      kpc2000_i2c.c:166: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:166:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:166:    got void *
      kpc2000_i2c.c:166: warning: incorrect type in argument 2
                                        (different address spaces)
      kpc2000_i2c.c:166:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:166:    got void *
      kpc2000_i2c.c:168: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:168:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:168:    got void *
      kpc2000_i2c.c:168: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:168:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:168:    got void *
      kpc2000_i2c.c:171: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:171:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:171:    got void *
      kpc2000_i2c.c:174: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:174:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:174:    got void *
      kpc2000_i2c.c:193: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:193:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:193:    got void *
      kpc2000_i2c.c:194: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:194:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:194:    got void *
      kpc2000_i2c.c:214: warning: incorrect type in argument 2
                                        (different address spaces)
      kpc2000_i2c.c:214:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:214:    got void *
      kpc2000_i2c.c:219: warning: incorrect type in argument 1
                                        (different address spaces)
      kpc2000_i2c.c:219:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:219:    got void *
      kpc2000_i2c.c:226: warning: incorrect type in argument 2
                                        (different address spaces)
      kpc2000_i2c.c:226:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:226:    got void *
      kpc2000_i2c.c:238: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:238:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:238:    got void *
      kpc2000_i2c.c:244: warning: incorrect type in argument 2
                                        (different address spaces)
      kpc2000_i2c.c:244:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:244:    got void *
      kpc2000_i2c.c:252: warning: incorrect type in argument 1
                                        (different address spaces)
      kpc2000_i2c.c:252:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:252:    got void *
      kpc2000_i2c.c:257: warning: incorrect type in argument 2
                                        (different address spaces)
      kpc2000_i2c.c:257:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:257:    got void *
      kpc2000_i2c.c:259: warning: incorrect type in argument 2
      				   (different address spaces)
      kpc2000_i2c.c:259:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:259:    got void *
      kpc2000_i2c.c:267: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:267:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:267:    got void *
      kpc2000_i2c.c:273: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:273:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:273:    got void *
      kpc2000_i2c.c:293: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:293:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:293:    got void *
      kpc2000_i2c.c:294: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:294:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:294:    got void *
      kpc2000_i2c.c:309: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:309:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:309:    got void *
      kpc2000_i2c.c:312: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:312:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:312:    got void *
      kpc2000_i2c.c:317: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:317:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:317:    got void *
      kpc2000_i2c.c:324: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:324:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:324:    got void *
      kpc2000_i2c.c:328: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:328:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:328:    got void *
      kpc2000_i2c.c:329: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:329:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:329:    got void *
      kpc2000_i2c.c:330: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:330:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:330:    got void *
      kpc2000_i2c.c:338: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:338:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:338:    got void *
      kpc2000_i2c.c:340: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:340:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:340:    got void *
      kpc2000_i2c.c:342: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:342:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:342:    got void *
      kpc2000_i2c.c:350: warning: incorrect type in argument 1
                                        (different address spaces)
      kpc2000_i2c.c:350:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:350:    got void *
      kpc2000_i2c.c:350: warning: incorrect type in argument 2
                                        (different address spaces)
      kpc2000_i2c.c:350:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:350:    got void *
      kpc2000_i2c.c:351: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:351:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:351:    got void *
      kpc2000_i2c.c:414: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:414:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:414:    got void *
      kpc2000_i2c.c:420: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:420:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:420:    got void *
      kpc2000_i2c.c:422: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:422:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:422:    got void *
      kpc2000_i2c.c:427: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:427:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:427:    got void *
      kpc2000_i2c.c:428: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:428:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:428:    got void *
      kpc2000_i2c.c:430: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:430:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:430:    got void *
      kpc2000_i2c.c:435: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:435:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:435:    got void *
      kpc2000_i2c.c:436: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:436:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:436:    got void *
      kpc2000_i2c.c:438: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:438:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:438:    got void *
      kpc2000_i2c.c:439: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:439:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:439:    got void *
      kpc2000_i2c.c:445: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:445:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:445:    got void *
      kpc2000_i2c.c:446: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:446:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:446:    got void *
      kpc2000_i2c.c:454: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:454:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:454:    got void *
      kpc2000_i2c.c:459: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:459:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:459:    got void *
      kpc2000_i2c.c:461: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:461:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:461:    got void *
      kpc2000_i2c.c:472: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:472:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:472:    got void *
      kpc2000_i2c.c:472: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:472:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:472:    got void *
      kpc2000_i2c.c:475: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:475:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:475:    got void *
      kpc2000_i2c.c:475: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:475:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:475:    got void *
      kpc2000_i2c.c:493: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:493:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:493:    got void *
      kpc2000_i2c.c:493: warning: incorrect type in argument 2
                                         (different address spaces)
      kpc2000_i2c.c:493:    expected void volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:493:    got void *
      kpc2000_i2c.c:512: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:512:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:512:    got void *
      kpc2000_i2c.c:516: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:516:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:516:    got void *
      kpc2000_i2c.c:516: warning: incorrect type in argument 1
                                         (different address spaces)
      kpc2000_i2c.c:516:    expected void const volatile [noderef] <asn:2> *addr
      kpc2000_i2c.c:516:    got void *
      Signed-off-by: default avatarEduardo Barretto <edusbarretto@gmail.com>
      Link: https://lore.kernel.org/r/20190818183555.7167-1-edusbarretto@gmail.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      1327d35a
    • Donald Yandt's avatar
      staging: android: Remove ion device tree bindings from the TODO · be237202
      Donald Yandt authored
      Commit 23a4388f ("staging: android: ion: Remove file ion_chunk_heap.c")
      and eadbf7a3 ("staging: android: ion: Remove file ion_carveout_heap.c")
      removed the chunk and carveout heaps from ion but left behind the device
      tree bindings for them in the TODO, this patch removes it.
      Signed-off-by: default avatarDonald Yandt <donald.yandt@gmail.com>
      Link: https://lore.kernel.org/r/20190818152023.891-1-donald.yandt@gmail.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      be237202
    • Christophe JAILLET's avatar
      staging: rtl8712: Improve naming of include hearder guards · f55ef00e
      Christophe JAILLET authored
      Choose a better name for the include hearder guard used in rtl871x_io.h.
      '_IO_H_' is to generic and does not match the comment after the #endif.
      Use '_RTL871X_IO_H_' instead.
      
      Also make the comments in the #endif /* XXX */ match the name used in
      #ifndef.
      Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
      Link: https://lore.kernel.org/r/20190818150609.3376-1-christophe.jaillet@wanadoo.frSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f55ef00e
    • Gao Xiang's avatar
      staging: erofs: avoid loop in submit chains · bfc4ccb1
      Gao Xiang authored
      As reported by erofs-utils fuzzer, 2 conditions
      can happen in corrupted images, which can cause
      unexpected behaviors.
       - access the same pcluster one more time;
       - access the tail end pcluster again, e.g.
                  _ access again (will trigger tail merging)
                 |
           1 2 3 1 2             ->   1 2 3 1
           |_ tail end of the chain    \___/ (unexpected behavior)
      Let's detect and avoid them now.
      Reviewed-by: default avatarChao Yu <yuchao0@huawei.com>
      Signed-off-by: default avatarGao Xiang <gaoxiang25@huawei.com>
      Link: https://lore.kernel.org/r/20190821030908.40282-1-gaoxiang25@huawei.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      bfc4ccb1
    • Hariprasad Kelam's avatar
    • Masanari Iida's avatar
    • Gao Xiang's avatar
      staging: erofs: avoid endless loop of invalid lookback distance 0 · 598bb891
      Gao Xiang authored
      As reported by erofs-utils fuzzer, Lookback distance should
      be a positive number, so it should be actually looked back
      rather than spinning.
      
      Fixes: 02827e17 ("staging: erofs: add erofs_map_blocks_iter")
      Cc: <stable@vger.kernel.org> # 4.19+
      Signed-off-by: default avatarGao Xiang <gaoxiang25@huawei.com>
      Reviewed-by: default avatarChao Yu <yuchao0@huawei.com>
      Link: https://lore.kernel.org/r/20190819103426.87579-7-gaoxiang25@huawei.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      598bb891
    • Gao Xiang's avatar
      staging: erofs: add two missing erofs_workgroup_put for corrupted images · 138e1a09
      Gao Xiang authored
      As reported by erofs-utils fuzzer, these error handling
      path will be entered to handle corrupted images.
      
      Lack of erofs_workgroup_puts will cause unmounting
      unsuccessfully.
      
      Fix these return values to EFSCORRUPTED as well.
      
      Fixes: 3883a79a ("staging: erofs: introduce VLE decompression support")
      Cc: <stable@vger.kernel.org> # 4.19+
      Signed-off-by: default avatarGao Xiang <gaoxiang25@huawei.com>
      Reviewed-by: default avatarChao Yu <yuchao0@huawei.com>
      Link: https://lore.kernel.org/r/20190819103426.87579-4-gaoxiang25@huawei.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      138e1a09
    • Gao Xiang's avatar
      staging: erofs: cannot set EROFS_V_Z_INITED_BIT if fill_inode_lazy fails · 3407a419
      Gao Xiang authored
      As reported by erofs-utils fuzzer, unsupported compressed
      clustersize will make fill_inode_lazy fail, for such case
      we cannot set EROFS_V_Z_INITED_BIT since we need return
      failure for each z_erofs_map_blocks_iter().
      
      Fixes: 152a333a ("staging: erofs: add compacted compression indexes support")
      Cc: <stable@vger.kernel.org> # 5.3+
      Signed-off-by: default avatarGao Xiang <gaoxiang25@huawei.com>
      Reviewed-by: default avatarChao Yu <yuchao0@huawei.com>
      Link: https://lore.kernel.org/r/20190819103426.87579-3-gaoxiang25@huawei.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3407a419
    • Gao Xiang's avatar
      staging: erofs: some compressed cluster should be submitted for corrupted images · ee45197c
      Gao Xiang authored
      As reported by erofs_utils fuzzer, a logical page can belong
      to at most 2 compressed clusters, if one compressed cluster
      is corrupted, but the other has been ready in submitting chain.
      
      The chain needs to submit anyway in order to keep the page
      working properly (page unlocked with PG_error set, PG_uptodate
      not set).
      
      Let's fix it now.
      
      Fixes: 3883a79a ("staging: erofs: introduce VLE decompression support")
      Cc: <stable@vger.kernel.org> # 4.19+
      Signed-off-by: default avatarGao Xiang <gaoxiang25@huawei.com>
      Reviewed-by: default avatarChao Yu <yuchao0@huawei.com>
      Link: https://lore.kernel.org/r/20190819103426.87579-2-gaoxiang25@huawei.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ee45197c
    • Gao Xiang's avatar
      staging: erofs: fix an error handling in erofs_readdir() · acb383f1
      Gao Xiang authored
      Richard observed a forever loop of erofs_read_raw_page() [1]
      which can be generated by forcely setting ->u.i_blkaddr
      to 0xdeadbeef (as my understanding block layer can
      handle access beyond end of device correctly).
      
      After digging into that, it seems the problem is highly
      related with directories and then I found the root cause
      is an improper error handling in erofs_readdir().
      
      Let's fix it now.
      
      [1] https://lore.kernel.org/r/1163995781.68824.1566084358245.JavaMail.zimbra@nod.at/Reported-by: default avatarRichard Weinberger <richard@nod.at>
      Fixes: 3aa8ec71 ("staging: erofs: add directory operations")
      Cc: <stable@vger.kernel.org> # 4.19+
      Reviewed-by: default avatarChao Yu <yuchao0@huawei.com>
      Signed-off-by: default avatarGao Xiang <gaoxiang25@huawei.com>
      Link: https://lore.kernel.org/r/20190818125457.25906-1-hsiangkao@aol.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      acb383f1
    • Gao Xiang's avatar
      staging: erofs: refuse to mount images with malformed volume name · a64d9493
      Gao Xiang authored
      As Richard reminder [1], A valid volume name should be
      ended in NIL terminator within the length of volume_name.
      
      Since this field currently isn't really used, let's fix
      it to avoid potential bugs in the future.
      
      [1] https://lore.kernel.org/r/1133002215.69049.1566119033047.JavaMail.zimbra@nod.at/Reported-by: default avatarRichard Weinberger <richard@nod.at>
      Signed-off-by: default avatarGao Xiang <gaoxiang25@huawei.com>
      Reviewed-by: default avatarChao Yu <yuchao0@huawei.com>
      Link: https://lore.kernel.org/r/20190818102824.22330-1-hsiangkao@aol.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a64d9493
  2. 19 Aug, 2019 1 commit
  3. 18 Aug, 2019 15 commits
  4. 17 Aug, 2019 9 commits
  5. 16 Aug, 2019 1 commit