1. 06 Jun, 2015 12 commits
    • David Vrabel's avatar
      xen/events: don't bind non-percpu VIRQs with percpu chip · 8d3cbb90
      David Vrabel authored
      commit 77bb3dfd upstream.
      
      A non-percpu VIRQ (e.g., VIRQ_CONSOLE) may be freed on a different
      VCPU than it is bound to.  This can result in a race between
      handle_percpu_irq() and removing the action in __free_irq() because
      handle_percpu_irq() does not take desc->lock.  The interrupt handler
      sees a NULL action and oopses.
      
      Only use the percpu chip/handler for per-CPU VIRQs (like VIRQ_TIMER).
      
        # cat /proc/interrupts | grep virq
         40:      87246          0  xen-percpu-virq      timer0
         44:          0          0  xen-percpu-virq      debug0
         47:          0      20995  xen-percpu-virq      timer1
         51:          0          0  xen-percpu-virq      debug1
         69:          0          0   xen-dyn-virq      xen-pcpu
         74:          0          0   xen-dyn-virq      mce
         75:         29          0   xen-dyn-virq      hvc_console
      Signed-off-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8d3cbb90
    • Ilya Dryomov's avatar
      libceph: request a new osdmap if lingering request maps to no osd · c018f621
      Ilya Dryomov authored
      commit b0494532 upstream.
      
      This commit does two things.  First, if there are any homeless
      lingering requests, we now request a new osdmap even if the osdmap that
      is being processed brought no changes, i.e. if a given lingering
      request turned homeless in one of the previous epochs and remained
      homeless in the current epoch.  Not doing so leaves us with a stale
      osdmap and as a result we may miss our window for reestablishing the
      watch and lose notifies.
      
      MON=1 OSD=1:
      
          # cat linger-needmap.sh
          #!/bin/bash
          rbd create --size 1 test
          DEV=$(rbd map test)
          ceph osd out 0
          rbd map dne/dne # obtain a new osdmap as a side effect (!)
          sleep 1
          ceph osd in 0
          rbd resize --size 2 test
          # rbd info test | grep size -> 2M
          # blockdev --getsize $DEV -> 1M
      
      N.B.: Not obtaining a new osdmap in between "osd out" and "osd in"
      above is enough to make it miss that resize notify, but that is a
      bug^Wlimitation of ceph watch/notify v1.
      
      Second, homeless lingering requests are now kicked just like those
      lingering requests whose mapping has changed.  This is mainly to
      recognize that a homeless lingering request makes no sense and to
      preserve the invariant that a registered lingering request is not
      sitting on any of r_req_lru_item lists.  This spares us a WARN_ON,
      which commit ba9d114e ("libceph: clear r_req_lru_item in
      __unregister_linger_request()") tried to fix the _wrong_ way.
      Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
      Reviewed-by: default avatarSage Weil <sage@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c018f621
    • Rusty Russell's avatar
      lguest: fix out-by-one error in address checking. · e93327e0
      Rusty Russell authored
      commit 83a35114 upstream.
      
      This bug has been there since day 1; addresses in the top guest physical
      page weren't considered valid.  You could map that page (the check in
      check_gpte() is correct), but if a guest tried to put a pagetable there
      we'd check that address manually when walking it, and kill the guest.
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e93327e0
    • Sasha Levin's avatar
      fs, omfs: add NULL terminator in the end up the token list · 1330ac1c
      Sasha Levin authored
      commit dcbff39d upstream.
      
      match_token() expects a NULL terminator at the end of the token list so
      that it would know where to stop.  Not having one causes it to overrun
      to invalid memory.
      
      In practice, passing a mount option that omfs didn't recognize would
      sometimes panic the system.
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      Signed-off-by: default avatarBob Copeland <me@bobcopeland.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      1330ac1c
    • 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 28 commits