Hi Kangjie,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on scsi/for-next]
[also build test WARNING on v4.20 next-20181224]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Kangjie-Lu/scsi-avoid-a-double-fetch-and-a-redundant-copy/20181226-042018
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next
config: m68k-allmodconfig (attached as .config)
compiler: m68k-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.2.0 make.cross ARCH=m68k 

All warnings (new ones prefixed by >>):

   In file included from arch/m68k/include/asm/uaccess.h:5:0,
                    from include/linux/uaccess.h:14,
                    from include/linux/poll.h:12,
                    from drivers/scsi/sg.c:42:
   drivers/scsi/sg.c: In function 'sg_read':
   drivers/scsi/sg.c:450:27: error: request for member 'pack_id' in something 
not a structure or union
          &((sg_io_hdr_t *)buf->pack_id));
                              ^
   arch/m68k/include/asm/uaccess_mm.h:134:19: note: in definition of macro 
'__get_user'
     switch (sizeof(*(ptr))) {     \
                      ^~~
   drivers/scsi/sg.c:449:14: note: in expansion of macro 'get_user'
        retval = get_user(req_pack_id,
                 ^~~~~~~~
   drivers/scsi/sg.c:450:27: error: request for member 'pack_id' in something 
not a structure or union
          &((sg_io_hdr_t *)buf->pack_id));
                              ^
   arch/m68k/include/asm/uaccess_mm.h:126:12: note: in definition of macro 
'__get_user_asm'
      : "m" (*(ptr)), "i" (err));    \
               ^~~
>> arch/m68k/include/asm/uaccess_mm.h:180:26: note: in expansion of macro 
>> '__get_user'
    #define get_user(x, ptr) __get_user(x, ptr)
                             ^~~~~~~~~~
   drivers/scsi/sg.c:449:14: note: in expansion of macro 'get_user'
        retval = get_user(req_pack_id,
                 ^~~~~~~~
   drivers/scsi/sg.c:450:27: error: request for member 'pack_id' in something 
not a structure or union
          &((sg_io_hdr_t *)buf->pack_id));
                              ^
   arch/m68k/include/asm/uaccess_mm.h:127:26: note: in definition of macro 
'__get_user_asm'
     (x) = (__force typeof(*(ptr)))(__force unsigned long)__gu_val; \
                             ^~~
>> arch/m68k/include/asm/uaccess_mm.h:180:26: note: in expansion of macro 
>> '__get_user'
    #define get_user(x, ptr) __get_user(x, ptr)
                             ^~~~~~~~~~
   drivers/scsi/sg.c:449:14: note: in expansion of macro 'get_user'
        retval = get_user(req_pack_id,
                 ^~~~~~~~
   drivers/scsi/sg.c:450:27: error: request for member 'pack_id' in something 
not a structure or union
          &((sg_io_hdr_t *)buf->pack_id));
                              ^
   arch/m68k/include/asm/uaccess_mm.h:126:12: note: in definition of macro 
'__get_user_asm'
      : "m" (*(ptr)), "i" (err));    \
               ^~~
>> arch/m68k/include/asm/uaccess_mm.h:180:26: note: in expansion of macro 
>> '__get_user'
    #define get_user(x, ptr) __get_user(x, ptr)
                             ^~~~~~~~~~
   drivers/scsi/sg.c:449:14: note: in expansion of macro 'get_user'
        retval = get_user(req_pack_id,
                 ^~~~~~~~
   drivers/scsi/sg.c:450:27: error: request for member 'pack_id' in something 
not a structure or union
          &((sg_io_hdr_t *)buf->pack_id));
                              ^
   arch/m68k/include/asm/uaccess_mm.h:127:26: note: in definition of macro 
'__get_user_asm'
     (x) = (__force typeof(*(ptr)))(__force unsigned long)__gu_val; \
                             ^~~
>> arch/m68k/include/asm/uaccess_mm.h:180:26: note: in expansion of macro 
>> '__get_user'
    #define get_user(x, ptr) __get_user(x, ptr)
                             ^~~~~~~~~~
   drivers/scsi/sg.c:449:14: note: in expansion of macro 'get_user'
        retval = get_user(req_pack_id,
                 ^~~~~~~~
   drivers/scsi/sg.c:450:27: error: request for member 'pack_id' in something 
not a structure or union
          &((sg_io_hdr_t *)buf->pack_id));
                              ^
   arch/m68k/include/asm/uaccess_mm.h:126:12: note: in definition of macro 
'__get_user_asm'
      : "m" (*(ptr)), "i" (err));    \
               ^~~
>> arch/m68k/include/asm/uaccess_mm.h:180:26: note: in expansion of macro 
>> '__get_user'
    #define get_user(x, ptr) __get_user(x, ptr)
                             ^~~~~~~~~~
   drivers/scsi/sg.c:449:14: note: in expansion of macro 'get_user'
        retval = get_user(req_pack_id,
                 ^~~~~~~~
   drivers/scsi/sg.c:450:27: error: request for member 'pack_id' in something 
not a structure or union
          &((sg_io_hdr_t *)buf->pack_id));
                              ^
   arch/m68k/include/asm/uaccess_mm.h:127:26: note: in definition of macro 
'__get_user_asm'
     (x) = (__force typeof(*(ptr)))(__force unsigned long)__gu_val; \
                             ^~~
>> arch/m68k/include/asm/uaccess_mm.h:180:26: note: in expansion of macro 
>> '__get_user'
    #define get_user(x, ptr) __get_user(x, ptr)
                             ^~~~~~~~~~
   drivers/scsi/sg.c:449:14: note: in expansion of macro 'get_user'
        retval = get_user(req_pack_id,
                 ^~~~~~~~
   drivers/scsi/sg.c:450:27: error: request for member 'pack_id' in something 
not a structure or union
          &((sg_io_hdr_t *)buf->pack_id));
                              ^
   arch/m68k/include/asm/uaccess_mm.h:145:27: note: in definition of macro 
'__get_user'
      const void *__gu_ptr = (ptr);    \
                              ^~~
   drivers/scsi/sg.c:449:14: note: in expansion of macro 'get_user'
        retval = get_user(req_pack_id,
                 ^~~~~~~~
   drivers/scsi/sg.c:450:27: error: request for member 'pack_id' in something 
not a structure or union
          &((sg_io_hdr_t *)buf->pack_id));
                              ^
   arch/m68k/include/asm/uaccess_mm.h:148:17: note: in definition of macro 
'__get_user'
       __typeof__(*(ptr)) t;    \
                    ^~~
   drivers/scsi/sg.c:449:14: note: in expansion of macro 'get_user'
        retval = get_user(req_pack_id,
                 ^~~~~~~~
--
   In file included from arch/m68k/include/asm/uaccess.h:5:0,
                    from include/linux/uaccess.h:14,
                    from include/linux/poll.h:12,
                    from drivers//scsi/sg.c:42:
   drivers//scsi/sg.c: In function 'sg_read':
   drivers//scsi/sg.c:450:27: error: request for member 'pack_id' in something 
not a structure or union
          &((sg_io_hdr_t *)buf->pack_id));
                              ^
   arch/m68k/include/asm/uaccess_mm.h:134:19: note: in definition of macro 
'__get_user'
     switch (sizeof(*(ptr))) {     \
                      ^~~
   drivers//scsi/sg.c:449:14: note: in expansion of macro 'get_user'
        retval = get_user(req_pack_id,
                 ^~~~~~~~
   drivers//scsi/sg.c:450:27: error: request for member 'pack_id' in something 
not a structure or union
          &((sg_io_hdr_t *)buf->pack_id));
                              ^
   arch/m68k/include/asm/uaccess_mm.h:126:12: note: in definition of macro 
'__get_user_asm'
      : "m" (*(ptr)), "i" (err));    \
               ^~~
>> arch/m68k/include/asm/uaccess_mm.h:180:26: note: in expansion of macro 
>> '__get_user'
    #define get_user(x, ptr) __get_user(x, ptr)
                             ^~~~~~~~~~
   drivers//scsi/sg.c:449:14: note: in expansion of macro 'get_user'
        retval = get_user(req_pack_id,
                 ^~~~~~~~
   drivers//scsi/sg.c:450:27: error: request for member 'pack_id' in something 
not a structure or union
          &((sg_io_hdr_t *)buf->pack_id));
                              ^
   arch/m68k/include/asm/uaccess_mm.h:127:26: note: in definition of macro 
'__get_user_asm'
     (x) = (__force typeof(*(ptr)))(__force unsigned long)__gu_val; \
                             ^~~
>> arch/m68k/include/asm/uaccess_mm.h:180:26: note: in expansion of macro 
>> '__get_user'
    #define get_user(x, ptr) __get_user(x, ptr)
                             ^~~~~~~~~~
   drivers//scsi/sg.c:449:14: note: in expansion of macro 'get_user'
        retval = get_user(req_pack_id,
                 ^~~~~~~~
   drivers//scsi/sg.c:450:27: error: request for member 'pack_id' in something 
not a structure or union
          &((sg_io_hdr_t *)buf->pack_id));
                              ^
   arch/m68k/include/asm/uaccess_mm.h:126:12: note: in definition of macro 
'__get_user_asm'
      : "m" (*(ptr)), "i" (err));    \
               ^~~
>> arch/m68k/include/asm/uaccess_mm.h:180:26: note: in expansion of macro 
>> '__get_user'
    #define get_user(x, ptr) __get_user(x, ptr)
                             ^~~~~~~~~~
   drivers//scsi/sg.c:449:14: note: in expansion of macro 'get_user'
        retval = get_user(req_pack_id,
                 ^~~~~~~~
   drivers//scsi/sg.c:450:27: error: request for member 'pack_id' in something 
not a structure or union
          &((sg_io_hdr_t *)buf->pack_id));
                              ^
   arch/m68k/include/asm/uaccess_mm.h:127:26: note: in definition of macro 
'__get_user_asm'
     (x) = (__force typeof(*(ptr)))(__force unsigned long)__gu_val; \
                             ^~~
>> arch/m68k/include/asm/uaccess_mm.h:180:26: note: in expansion of macro 
>> '__get_user'
    #define get_user(x, ptr) __get_user(x, ptr)
                             ^~~~~~~~~~
   drivers//scsi/sg.c:449:14: note: in expansion of macro 'get_user'
        retval = get_user(req_pack_id,
                 ^~~~~~~~
   drivers//scsi/sg.c:450:27: error: request for member 'pack_id' in something 
not a structure or union
          &((sg_io_hdr_t *)buf->pack_id));
                              ^
   arch/m68k/include/asm/uaccess_mm.h:126:12: note: in definition of macro 
'__get_user_asm'
      : "m" (*(ptr)), "i" (err));    \
               ^~~
>> arch/m68k/include/asm/uaccess_mm.h:180:26: note: in expansion of macro 
>> '__get_user'
    #define get_user(x, ptr) __get_user(x, ptr)
                             ^~~~~~~~~~
   drivers//scsi/sg.c:449:14: note: in expansion of macro 'get_user'
        retval = get_user(req_pack_id,
                 ^~~~~~~~
   drivers//scsi/sg.c:450:27: error: request for member 'pack_id' in something 
not a structure or union
          &((sg_io_hdr_t *)buf->pack_id));
                              ^
   arch/m68k/include/asm/uaccess_mm.h:127:26: note: in definition of macro 
'__get_user_asm'
     (x) = (__force typeof(*(ptr)))(__force unsigned long)__gu_val; \
                             ^~~
>> arch/m68k/include/asm/uaccess_mm.h:180:26: note: in expansion of macro 
>> '__get_user'
    #define get_user(x, ptr) __get_user(x, ptr)
                             ^~~~~~~~~~
   drivers//scsi/sg.c:449:14: note: in expansion of macro 'get_user'
        retval = get_user(req_pack_id,
                 ^~~~~~~~
   drivers//scsi/sg.c:450:27: error: request for member 'pack_id' in something 
not a structure or union
          &((sg_io_hdr_t *)buf->pack_id));
                              ^
   arch/m68k/include/asm/uaccess_mm.h:145:27: note: in definition of macro 
'__get_user'
      const void *__gu_ptr = (ptr);    \
                              ^~~
   drivers//scsi/sg.c:449:14: note: in expansion of macro 'get_user'
        retval = get_user(req_pack_id,
                 ^~~~~~~~
   drivers//scsi/sg.c:450:27: error: request for member 'pack_id' in something 
not a structure or union
          &((sg_io_hdr_t *)buf->pack_id));
                              ^
   arch/m68k/include/asm/uaccess_mm.h:148:17: note: in definition of macro 
'__get_user'
       __typeof__(*(ptr)) t;    \
                    ^~~
   drivers//scsi/sg.c:449:14: note: in expansion of macro 'get_user'
        retval = get_user(req_pack_id,
                 ^~~~~~~~

vim +/__get_user +180 arch/m68k/include/asm/uaccess_mm.h

^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  107 
 
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  108 
 
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  109 
 #define __get_user_asm(res, x, ptr, type, bwl, reg, err) ({            \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  110 
        type __gu_val;                                                  \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  111 
        asm volatile ("\n"                                              \
e08d703cc arch/m68k/include/asm/uaccess_mm.h Greg Ungerer       2011-10-14  112 
                "1:     "MOVES"."#bwl"  %2,%1\n"                        \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  113 
                "2:\n"                                                  \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  114 
                "       .section .fixup,\"ax\"\n"                       \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  115 
                "       .even\n"                                        \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  116 
                "10:    move.l  %3,%0\n"                                \
e08d703cc arch/m68k/include/asm/uaccess_mm.h Greg Ungerer       2011-10-14  117 
                "       sub.l   %1,%1\n"                                \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  118 
                "       jra     2b\n"                                   \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  119 
                "       .previous\n"                                    \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  120 
                "\n"                                                    \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  121 
                "       .section __ex_table,\"a\"\n"                    \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  122 
                "       .align  4\n"                                    \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  123 
                "       .long   1b,10b\n"                               \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  124 
                "       .previous"                                      \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  125 
                : "+d" (res), "=&" #reg (__gu_val)                      \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23 @126 
                : "m" (*(ptr)), "i" (err));                             \
09a2f7cf6 arch/m68k/include/asm/uaccess_mm.h Michael S. Tsirkin 2014-12-12  127 
        (x) = (__force typeof(*(ptr)))(__force unsigned long)__gu_val;  \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  128 
 })
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  129 
 
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  130 
 #define __get_user(x, ptr)                                             \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  131 
 ({                                                                     \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  132 
        int __gu_err = 0;                                               \
11c40f8a6 include/asm-m68k/uaccess.h         Al Viro            2006-01-12  133 
        __chk_user_ptr(ptr);                                            \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  134 
        switch (sizeof(*(ptr))) {                                       \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  135 
        case 1:                                                         \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  136 
                __get_user_asm(__gu_err, x, ptr, u8, b, d, -EFAULT);    \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  137 
                break;                                                  \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  138 
        case 2:                                                         \
631d8b674 arch/m68k/include/asm/uaccess_mm.h Geert Uytterhoeven 2013-06-09  139 
                __get_user_asm(__gu_err, x, ptr, u16, w, r, -EFAULT);   \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  140 
                break;                                                  \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  141 
        case 4:                                                         \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  142 
                __get_user_asm(__gu_err, x, ptr, u32, l, r, -EFAULT);   \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  143 
                break;                                                  \
7124330da arch/m68k/include/asm/uaccess_mm.h Geert Uytterhoeven 2018-05-14  144 
        case 8: {                                                       \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  145 
                const void *__gu_ptr = (ptr);                           \
7124330da arch/m68k/include/asm/uaccess_mm.h Geert Uytterhoeven 2018-05-14  146 
                union {                                                 \
7124330da arch/m68k/include/asm/uaccess_mm.h Geert Uytterhoeven 2018-05-14  147 
                        u64 l;                                          \
7124330da arch/m68k/include/asm/uaccess_mm.h Geert Uytterhoeven 2018-05-14  148 
                        __typeof__(*(ptr)) t;                           \
7124330da arch/m68k/include/asm/uaccess_mm.h Geert Uytterhoeven 2018-05-14  149 
                } __gu_val;                                             \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  150 
                asm volatile ("\n"                                      \
e08d703cc arch/m68k/include/asm/uaccess_mm.h Greg Ungerer       2011-10-14  151 
                        "1:     "MOVES".l       (%2)+,%1\n"             \
e08d703cc arch/m68k/include/asm/uaccess_mm.h Greg Ungerer       2011-10-14  152 
                        "2:     "MOVES".l       (%2),%R1\n"             \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  153 
                        "3:\n"                                          \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  154 
                        "       .section .fixup,\"ax\"\n"               \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  155 
                        "       .even\n"                                \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  156 
                        "10:    move.l  %3,%0\n"                        \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  157 
                        "       sub.l   %1,%1\n"                        \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  158 
                        "       sub.l   %R1,%R1\n"                      \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  159 
                        "       jra     3b\n"                           \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  160 
                        "       .previous\n"                            \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  161 
                        "\n"                                            \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  162 
                        "       .section __ex_table,\"a\"\n"            \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  163 
                        "       .align  4\n"                            \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  164 
                        "       .long   1b,10b\n"                       \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  165 
                        "       .long   2b,10b\n"                       \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  166 
                        "       .previous"                              \
7124330da arch/m68k/include/asm/uaccess_mm.h Geert Uytterhoeven 2018-05-14  167 
                        : "+d" (__gu_err), "=&r" (__gu_val.l),          \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  168 
                          "+a" (__gu_ptr)                               \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  169 
                        : "i" (-EFAULT)                                 \
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23  170 
                        : "memory");                                    \
7124330da arch/m68k/include/asm/uaccess_mm.h Geert Uytterhoeven 2018-05-14  171 
                (x) = __gu_val.t;                                       \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  172 
                break;                                                  \
7124330da arch/m68k/include/asm/uaccess_mm.h Geert Uytterhoeven 2018-05-14  173 
        }                                                               \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  174 
        default:                                                        \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  175 
                __gu_err = __get_user_bad();                            \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  176 
                break;                                                  \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  177 
        }                                                               \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  178 
        __gu_err;                                                       \
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  179 
 })
d94af931a include/asm-m68k/uaccess.h         Roman Zippel       2006-06-23 @180 
 #define get_user(x, ptr) __get_user(x, ptr)
^1da177e4 include/asm-m68k/uaccess.h         Linus Torvalds     2005-04-16  181 
 

:::::: The code at line 180 was first introduced by commit
:::::: d94af931af42152e34539dd4782b1724084a89fb [PATCH] m68k: clean up uaccess.h

:::::: TO: Roman Zippel <zip...@linux-m68k.org>
:::::: CC: Linus Torvalds <torva...@g5.osdl.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to