1. 06 Jun, 2015 8 commits
    • Junling Zheng's avatar
      net: socket: Fix the wrong returns for recvmsg and sendmsg · 5ca74d43
      Junling Zheng authored
      Based on 08adb7da upstream.
      
      We found that after v3.10.73, recvmsg might return -EFAULT while -EINVAL
      was expected.
      
      We tested it through the recvmsg01 testcase come from LTP testsuit. It set
      msg->msg_namelen to -1 and the recvmsg syscall returned errno 14, which is
      unexpected (errno 22 is expected):
      
      recvmsg01    4  TFAIL  :  invalid socket length ; returned -1 (expected -1),
      errno 14 (expected 22)
      
      Linux mainline has no this bug for commit 08adb7da fixes it accidentally.
      However, it is too large and complex to be backported to LTS 3.10.
      
      Commit 281c9c36 (net: compat: Update get_compat_msghdr() to match
      copy_msghdr_from_user() behaviour) made get_compat_msghdr() return
      error if msg_sys->msg_namelen was negative, which changed the behaviors
      of recvmsg and sendmsg syscall in a lib32 system:
      
      Before commit 281c9c36, get_compat_msghdr() wouldn't fail and it would
      return -EINVAL in move_addr_to_user() or somewhere if msg_sys->msg_namelen
      was invalid and then syscall returned -EINVAL, which is correct.
      
      And now, when msg_sys->msg_namelen is negative, get_compat_msghdr() will
      fail and wants to return -EINVAL, however, the outer syscall will return
      -EFAULT directly, which is unexpected.
      
      This patch gets the return value of get_compat_msghdr() as well as
      copy_msghdr_from_user(), then returns this expected value if
      get_compat_msghdr() fails.
      
      Fixes: 281c9c36 (net: compat: Update get_compat_msghdr() to match copy_msghdr_from_user() behaviour)
      Signed-off-by: default avatarJunling Zheng <zhengjunling@huawei.com>
      Signed-off-by: default avatarHanbing Xu <xuhanbing@huawei.com>
      Cc: Li Zefan <lizefan@huawei.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: David Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5ca74d43
    • Paolo Bonzini's avatar
      KVM: MMU: fix CR4.SMEP=1, CR0.WP=0 with shadow pages · 2917b458
      Paolo Bonzini authored
      commit 89876115 upstream.
      
      smep_andnot_wp is initialized in kvm_init_shadow_mmu and shadow pages
      should not be reused for different values of it.  Thus, it has to be
      added to the mask in kvm_mmu_pte_write.
      Reviewed-by: default avatarXiao Guangrong <guangrong.xiao@linux.intel.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2917b458
    • Chen Gang's avatar
      qla2xxx: remove redundant declaration in 'qla_gbl.h' · 2b592f2c
      Chen Gang authored
      commit 9493c242 upstream.
      
      Remove 2 redundant extern inline functions: qla8044_set_qsnt_ready() and
      qla8044_need_reset_handler(). At present, within upstream next kernel
      source code, they are only used within "drivers/scsi/qla2xxx/qla_nx2.c".
      
      The related error and warnings (with allmodconfig under tile):
      
          CC [M]  drivers/scsi/qla2xxx/qla_nx2.o
        drivers/scsi/qla2xxx/qla_nx2.c:1633:1: error: static declaration of 'qla8044_need_reset_handler' follows non-static declaration
         qla8044_need_reset_handler(struct scsi_qla_host *vha)
         ^
        In file included from drivers/scsi/qla2xxx/qla_def.h:3706:0,
                         from drivers/scsi/qla2xxx/qla_nx2.c:11:
        drivers/scsi/qla2xxx/qla_gbl.h:756:20: note: previous declaration of 'qla8044_need_reset_handler' was here
         extern inline void qla8044_need_reset_handler(struct scsi_qla_host *vha);
                            ^
        drivers/scsi/qla2xxx/qla_gbl.h:756:20: warning: inline function 'qla8044_need_reset_handler' declared but never defined
        make[3]: *** [drivers/scsi/qla2xxx/qla_nx2.o] Error 1
        make[2]: *** [drivers/scsi/qla2xxx] Error 2
        make[1]: *** [drivers/scsi] Error 2
        make: *** [drivers] Error 2
      
          CC [M]  drivers/scsi/qla2xxx/qla_tmpl.o
        In file included from drivers/scsi/qla2xxx/qla_def.h:3706:0,
                         from drivers/scsi/qla2xxx/qla_tmpl.c:7:
        drivers/scsi/qla2xxx/qla_gbl.h:755:20: warning: inline function 'qla8044_set_qsnt_ready' declared but never defined
         extern inline void qla8044_set_qsnt_ready(struct scsi_qla_host *vha);
                          ^
      Signed-off-by: default avatarChen Gang <gang.chen.5i5j@gmail.com>
      Acked-by: default avatarSaurav Kashyap <saurav.kashyap@qlogic.com>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2b592f2c
    • Kirill A. Shutemov's avatar
      kernel: use the gnu89 standard explicitly · d6d25d16
      Kirill A. Shutemov authored
      commit 51b97e35 upstream.
      
      Sasha Levin reports:
       "gcc5 changes the default standard to c11, which makes kernel build
        unhappy
      
        Explicitly define the kernel standard to be gnu89 which should keep
        everything working exactly like it was before gcc5"
      
      There are multiple small issues with the new default, but the biggest
      issue seems to be that the old - and very useful - GNU extension to
      allow a cast in front of an initializer has gone away.
      
      Patch updated by Kirill:
       "I'm pretty sure all gcc versions you can build kernel with supports
        -std=gnu89.  cc-option is redunrant.
      
        We also need to adjust HOSTCFLAGS otherwise allmodconfig fails for me"
      
      Note by Andrew Pinski:
       "Yes it was reported and both problems relating to this extension has
        been added to gnu99 and gnu11.  Though there are other issues with the
        kernel dealing with extern inline have different semantics between
        gnu89 and gnu99/11"
      
      End result: we may be able to move up to a newer stdc model eventually,
      but right now the newer models have some annoying deficiencies, so the
      traditional "gnu89" model ends up being the preferred one.
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      Singed-off-by: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d6d25d16
    • Behan Webster's avatar
      staging, rtl8192e, LLVMLinux: Remove unused inline prototype · a18d3f83
      Behan Webster authored
      commit 62ec95f8 upstream.
      
      rtllib_probe_req is defined as "static inline" in rtllib_softmac.c however it
      is declared differently as "extern inline" in rtllib_softmac.h. Since it isn't
      used outside of the scope of rtllib_softmac, it makes sense to remove the
      incorrect declaration.
      Signed-off-by: default avatarBehan Webster <behanw@converseincode.com>
      Suggested-by: default avatarArnd Bergmann <arnd@arndb.de>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a18d3f83
    • Arnd Bergmann's avatar
      staging: rtl8712, rtl8712: avoid lots of build warnings · fa89009a
      Arnd Bergmann authored
      commit 0c9f3a65 upstream.
      
      The rtl8712 driver has an 'extern inline' function that contains an
      'if', which causes lots of warnings with CONFIG_PROFILE_ALL_BRANCHES
      overriding the definition of 'if':
      
      drivers/staging/rtl8712/ieee80211.h:759:229: warning: '______f' is static but declared in inline function 'ieee80211_get_hdrlen' which is not static [enabled by default]
      
      This changes the driver to use 'static inline' instead, which happens
      to be the correct annotation anyway.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Cc: Larry Finger <Larry.Finger@lwfinger.net>
      Cc: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      fa89009a
    • Behan Webster's avatar
      staging, rtl8192e, LLVMLinux: Change extern inline to static inline · c3d1409f
      Behan Webster authored
      commit 6d91857d upstream.
      
      With compilers which follow the C99 standard (like modern versions of gcc and
      clang), "extern inline" does the opposite thing from older versions of gcc
      (emits code for an externally linkable version of the inline function).
      
      "static inline" does the intended behavior in all cases instead.
      Signed-off-by: default avatarBehan Webster <behanw@converseincode.com>
      Suggested-by: default avatarArnd Bergmann <arnd@arndb.de>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c3d1409f
    • Greg Kroah-Hartman's avatar
      staging: wlags49_h2: fix extern inline functions · 43770aad
      Greg Kroah-Hartman authored
      Patch not upstream as this driver is deleted there.
      
      Fix up some "extern inline" functions as they break the build when using
      a "modern" complier (i.e. gcc5).
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      43770aad
  2. 17 May, 2015 32 commits