On Fri, Jul 24, 2015 at 04:18:30PM +0800, kbuild test robot wrote: > tree: git://git.cmpxchg.org/linux-mmotm.git master > head: 61f5f835b6f06fbc233481b5d3c0afd71ecf54e8 > commit: b9e95c5dd1134d35b6c9aeaa3967ab5b3945ba73 [371/385] mm, mpx: add "vm_flags_t vm_flags" arg to do_mmap_pgoff() > reproduce: > # apt-get install sparse > git checkout b9e95c5dd1134d35b6c9aeaa3967ab5b3945ba73 > make ARCH=x86_64 allmodconfig > make C=1 CF=-D__CHECK_ENDIAN__ > > > sparse warnings: (new ones prefixed by >>) > > >> arch/x86/mm/mpx.c:71:54: sparse: implicit cast to nocast type > arch/x86/mm/mpx.c:312:27: sparse: incompatible types in comparison expression (different address spaces) > -- > >> include/linux/mm.h:1812:54: sparse: implicit cast to nocast type > -- > mm/mmap.c:1343:47: sparse: implicit cast to nocast type > mm/mmap.c:1345:45: sparse: implicit cast to nocast type > mm/mmap.c:1354:45: sparse: implicit cast to nocast type > mm/mmap.c:1375:47: sparse: implicit cast to nocast type > mm/mmap.c:1395:37: sparse: implicit cast to nocast type > mm/mmap.c:1399:37: sparse: implicit cast to nocast type > mm/mmap.c:1443:33: sparse: implicit cast to nocast type > mm/mmap.c:1578:29: sparse: implicit cast to nocast type > mm/internal.h:253:43: sparse: implicit cast to nocast type > mm/mmap.c:2650:37: sparse: implicit cast to nocast type > mm/mmap.c:2690:34: sparse: implicit cast to nocast type > mm/mmap.c:2693:34: sparse: implicit cast to nocast type > >> include/linux/mm.h:1812:54: sparse: implicit cast to nocast type > mm/internal.h:253:43: sparse: implicit cast to nocast type sparse complains on each and every vm_flags_t initialization, even with proper VM_* constants. Do we really want to fix that? To me it's too much pain and no gain. __nocast is not beneficial here. And I'm not sure that vm_flags_t typedef was a good idea after all. Originally, it was intended to become 64-bit one day, but four years later it's still unsigned long. Plain unsigned long works fine for other bit field. What is special about vm_flags? > vim +71 arch/x86/mm/mpx.c > > 55 * bounds tables (the bounds directory is user-allocated). > 56 * > 57 * Later on, we use the vma->vm_ops to uniquely identify these > 58 * VMAs. > 59 */ > 60 static unsigned long mpx_mmap(unsigned long len) > 61 { > 62 struct mm_struct *mm = current->mm; > 63 unsigned long addr, populate; > 64 > 65 /* Only bounds table can be allocated here */ > 66 if (len != mpx_bt_size_bytes(mm)) > 67 return -EINVAL; > 68 > 69 down_write(&mm->mmap_sem); > 70 addr = do_mmap(NULL, 0, len, PROT_READ | PROT_WRITE, > > 71 MAP_ANONYMOUS | MAP_PRIVATE, VM_MPX, 0, &populate); > 72 up_write(&mm->mmap_sem); > 73 if (populate) > 74 mm_populate(addr, populate); > 75 > 76 return addr; > 77 } > 78 > 79 enum reg_type { > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/pipermail/kbuild-all Intel Corporation > > -- > To unsubscribe, send a message with 'unsubscribe linux-mm' in > the body to majordomo@xxxxxxxxx. For more info on Linux MM, > see: http://www.linux-mm.org/ . > Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a> -- Kirill A. Shutemov -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>