1. 20 4月, 2018 12 次提交
    • A
      y2038: ipc: Use ktime_get_real_seconds consistently · 2a70b787
      Arnd Bergmann 提交于
      In some places, we still used get_seconds() instead of
      ktime_get_real_seconds(), and I'm changing the remaining ones now to
      all use ktime_get_real_seconds() so we use the full available range for
      timestamps instead of overflowing the 'unsigned long' return value in
      year 2106 on 32-bit kernels.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      2a70b787
    • A
      y2038: xtensa: Extend sysvipc data structures · b497ef57
      Arnd Bergmann 提交于
      xtensa, uses a nonstandard variation of the generic sysvipc
      data structures, intended to have the padding moved around
      so it can deal with big-endian 32-bit user space that has
      64-bit time_t.
      
      xtensa tries hard to define the structures so they work
      in both big-endian and little-endian systems with padding
      on the right side.
      However, they only succeeded for for two of the three structures,
      and their struct shmid64_ds ended up being defined in two
      identical copies, and the big-endian one is wrong.
      
      This takes just take the same approach here that we have for
      the asm-generic headers and adds separate 32-bit fields for the
      upper halves of the timestamps, to let libc deal with the mess
      in user space.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      b497ef57
    • A
      y2038: powerpc: Extend sysvipc data structures · d0b67de9
      Arnd Bergmann 提交于
      powerpc, uses a nonstandard variation of the generic sysvipc
      data structures, intended to have the padding moved around
      so it can deal with big-endian 32-bit user space that has
      64-bit time_t.
      
      powerpc has the same definition as parisc and sparc, but now also
      supports little-endian mode, which is now wrong because the
      padding is made for big-endian user space.
      
      This takes just take the same approach here that we have for
      the asm-generic headers and adds separate 32-bit fields for the
      upper halves of the timestamps, to let libc deal with the mess
      in user space.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      d0b67de9
    • A
      y2038: sparc: Extend sysvipc data structures · 91b9b0d7
      Arnd Bergmann 提交于
      sparc, uses a nonstandard variation of the generic sysvipc
      data structures, intended to have the padding moved around
      so it can deal with big-endian 32-bit user space that has
      64-bit time_t.
      
      Unlike most architectures, sparc actually succeeded in
      defining this right for big-endian CPUs, but as everyone else
      got it wrong, we just use the same hack everywhere.
      
      This takes just take the same approach here that we have for
      the asm-generic headers and adds separate 32-bit fields for the
      upper halves of the timestamps, to let libc deal with the mess
      in user space.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      91b9b0d7
    • A
      y2038: parisc: Extend sysvipc data structures · f69c97f6
      Arnd Bergmann 提交于
      parisc, uses a nonstandard variation of the generic sysvipc
      data structures, intended to have the padding moved around
      so it can deal with big-endian 32-bit user space that has
      64-bit time_t.
      
      Unlike most architectures, parisc actually succeeded in
      defining this right for big-endian CPUs, but as everyone else
      got it wrong, we just use the same hack everywhere.
      
      This takes just take the same approach here that we have for
      the asm-generic headers and adds separate 32-bit fields for the
      upper halves of the timestamps, to let libc deal with the mess
      in user space.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      f69c97f6
    • A
      y2038: mips: Extend sysvipc data structures · 3f3a4b3f
      Arnd Bergmann 提交于
      MIPS is the weirdest case for sysvipc, because each of the
      three data structures is done differently:
      
      * msqid64_ds has padding in the right place so we could in theory
        extend this one to just have 64-bit values instead of time_t.
        As this does not work for most of the other combinations,
        we just handle it in the common manner though.
      
      * semid64_ds has no padding for 64-bit time_t, but has two reserved
        'long' fields, which are sufficient to extend the sem_otime
        and sem_ctime fields to 64 bit. In order to do this, the libc
        implementation will have to copy the data into another structure
        that has the fields in a different order. MIPS is the only
        architecture with this problem, so this is best done in MIPS
        specific libc code.
      
      * shmid64_ds is slightly worse than that, because it has three
        time_t fields but only two unused 32-bit words. As a workaround,
        we extend each field only by 16 bits, ending up with 48-bit
        timestamps that user space again has to work around by itself.
      
      The compat versions of the data structures are changed in the
      same way.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      3f3a4b3f
    • A
      y2038: arm64: Extend sysvipc compat data structures · 83335eb4
      Arnd Bergmann 提交于
      Both 32-bit amd 64-bit ARM use the asm-generic header files for their
      sysvipc data structures, so no special care is needed to make those
      work beyond y2038, with the one exception of compat mode: Since there
      is no asm-generic definition of the compat mode IPC structures, ARM64
      provides its own copy, and we make those match the changes in the native
      asm-generic header files.
      
      There is sufficient padding in these data structures to extend all
      timestamps to 64 bit, but on big-endian ARM kernels, the padding
      is in the wrong place, so the C library has to ensure it reassembles
      a 64-bit time_t correctly.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      83335eb4
    • A
      y2038: s390: Remove unneeded ipc uapi header files · 26293b31
      Arnd Bergmann 提交于
      The s390 msgbuf/sembuf/shmbuf header files are all identical to the
      version from asm-generic.
      
      This patch removes the files and replaces them with 'generic-y'
      statements, to avoid having to modify each copy when we extend sysvipc
      to deal with 64-bit time_t in 32-bit user space.
      
      Note that unlike alpha and ia64, the ipcbuf.h header file is slightly
      different here, so I'm leaving the private copy.
      
      To deal with 32-bit compat tasks, we also have to adapt the definitions
      of compat_{shm,sem,msg}id_ds to match the changes to the respective
      asm-generic files.
      Acked-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      26293b31
    • A
      y2038: ia64: Remove unneeded ipc uapi header files · 6f22a7f4
      Arnd Bergmann 提交于
      The ia64 ipcbuf/msgbuf/sembuf/shmbuf header files are all identical
      to the version from asm-generic.
      
      This patch removes the files and replaces them with 'generic-y'
      statements as part of the y2038 changes. While ia64 no longer has
      a compat mode and doesn't need the file any more, it seem nicer
      to clean this up anyway.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      6f22a7f4
    • A
      y2038: alpha: Remove unneeded ipc uapi header files · 469599f6
      Arnd Bergmann 提交于
      The alpha ipcbuf/msgbuf/sembuf/shmbuf header files are all identical
      to the version from asm-generic.
      
      This patch removes the files and replaces them with 'generic-y'
      statements as part of the y2038 series. Since there is no 32-bit
      syscall support for alpha, we don't need the other changes, but
      it's good to have clean this up anyway.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      469599f6
    • A
      y2038: x86: Extend sysvipc data structures · c039dbd5
      Arnd Bergmann 提交于
      This extends the x86 copy of the sysvipc data structures to deal with
      32-bit user space that has 64-bit time_t and wants to see timestamps
      beyond 2038.
      
      Fortunately, x86 has padding for this purpose in all the data structures,
      so we can just add extra fields. With msgid64_ds and shmid64_ds, the
      data structure is identical to the asm-generic version, which we have
      already extended.
      
      For some reason however, the 64-bit version of semid64_ds ended up with
      extra padding, so I'm implementing the same approach as the asm-generic
      version here, by using separate fields for the upper and lower halves
      of the two timestamps.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      c039dbd5
    • A
      y2038: asm-generic: Extend sysvipc data structures · f991f015
      Arnd Bergmann 提交于
      Most architectures now use the asm-generic copy of the sysvipc data
      structures (msqid64_ds, semid64_ds, shmid64_ds), which use 32-bit
      __kernel_time_t on 32-bit architectures but have padding behind them to
      allow extending the type to 64-bit.
      
      Unfortunately, that fails on all big-endian architectures, which have the
      padding on the wrong side. As so many of them get it wrong, we decided to
      not bother even trying to fix it up when we introduced the asm-generic
      copy. Instead we always use the padding word now to provide the upper
      32 bits of the seconds value, regardless of the endianess.
      
      A libc implementation on a typical big-endian system can deal with
      this by providing its own copy of the structure definition to user
      space, and swapping the two 32-bit words before returning from the
      semctl/shmctl/msgctl system calls.
      
      Note that msqid64_ds and shmid64_ds were broken on x32 since commit
      f4b4aae1 ("x86/headers/uapi: Fix __BITS_PER_LONG value for x32
      builds"). I have sent a separate fix for that, but as we no longer
      have to worry about x32 here, I no longer worry about x32 here and
      use 'unsigned long' instead of __kernel_ulong_t.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      f991f015
  2. 19 4月, 2018 12 次提交
    • D
      time: Change nanosleep to safe __kernel_* types · 01909974
      Deepa Dinamani 提交于
      Change over clock_nanosleep syscalls to use y2038 safe
      __kernel_timespec times. This will enable changing over
      of these syscalls to use new y2038 safe syscalls when
      the architectures define the CONFIG_64BIT_TIME.
      
      Note that nanosleep syscall is deprecated and does not have a
      plan for making it y2038 safe. But, the syscall should work as
      before on 64 bit machines and on 32 bit machines, the syscall
      works correctly until y2038 as before using the existing compat
      syscall version. There is no new syscall for supporting 64 bit
      time_t on 32 bit architectures.
      
      Cc: linux-api@vger.kernel.org
      Signed-off-by: NDeepa Dinamani <deepa.kernel@gmail.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      01909974
    • D
      time: Change types to new y2038 safe __kernel_* types · 6d5b8413
      Deepa Dinamani 提交于
      Change over clock_settime, clock_gettime and clock_getres
      syscalls to use __kernel_timespec times. This will enable
      changing over of these syscalls to use new y2038 safe syscalls
      when the architectures define the CONFIG_64BIT_TIME.
      
      Cc: linux-api@vger.kernel.org
      Signed-off-by: NDeepa Dinamani <deepa.kernel@gmail.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      6d5b8413
    • D
      time: Fix get_timespec64() for y2038 safe compat interfaces · ea2ce8f3
      Deepa Dinamani 提交于
      get/put_timespec64() interfaces will eventually be used for
      conversions between the new y2038 safe struct __kernel_timespec
      and struct timespec64.
      
      The new y2038 safe syscalls have a common entry for native
      and compat interfaces.
      On compat interfaces, the high order bits of nanoseconds
      should be zeroed out. This is because the application code
      or the libc do not guarantee zeroing of these. If used without
      zeroing, kernel might be at risk of using timespec values
      incorrectly.
      
      Note that clearing of bits is dependent on CONFIG_64BIT_TIME
      for now. This is until COMPAT_USE_64BIT_TIME has been handled
      correctly. x86 will be the first architecture that will use the
      CONFIG_64BIT_TIME.
      Signed-off-by: NDeepa Dinamani <deepa.kernel@gmail.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      ea2ce8f3
    • D
      time: Add new y2038 safe __kernel_timespec · acf8870a
      Deepa Dinamani 提交于
      The new struct __kernel_timespec is similar to current
      internal kernel struct timespec64 on 64 bit architecture.
      The compat structure however is similar to below on little
      endian systems (padding and tv_nsec are switched for big
      endian systems):
      
      typedef s32            compat_long_t;
      typedef s64            compat_kernel_time64_t;
      
      struct compat_kernel_timespec {
             compat_kernel_time64_t  tv_sec;
             compat_long_t           tv_nsec;
             compat_long_t           padding;
      };
      
      This allows for both the native and compat representations to
      be the same and syscalls using this type as part of their ABI
      can have a single entry point to both.
      
      Note that the compat define is not included anywhere in the
      kernel explicitly to avoid confusion.
      
      These types will be used by the new syscalls that will be
      introduced in the consequent patches.
      Most of the new syscalls are just an update to the existing
      native ones with this new type. Hence, put this new type under
      an ifdef so that the architectures can define CONFIG_64BIT_TIME
      when they are ready to handle this switch.
      
      Cc: linux-arch@vger.kernel.org
      Signed-off-by: NDeepa Dinamani <deepa.kernel@gmail.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      acf8870a
    • D
      posix-timers: Make compat syscalls depend on CONFIG_COMPAT_32BIT_TIME · b5793b0d
      Deepa Dinamani 提交于
      clock_gettime, clock_settime, clock_getres and clock_nanosleep
      compat syscalls are also repurposed to provide backward compatibility
      to support 32 bit time_t on 32 bit systems.
      
      Note that nanosleep compat syscall will also be treated the same way
      as the above syscalls as it shares common handler functions with
      clock_nanosleep. But, there is no plan to provide y2038 safe solution
      for nanosleep.
      Signed-off-by: NDeepa Dinamani <deepa.kernel@gmail.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      b5793b0d
    • D
      time: Introduce CONFIG_COMPAT_32BIT_TIME · 17435e5f
      Deepa Dinamani 提交于
      Compat functions are now used to support 32 bit time_t in
      compat mode on 64 bit architectures and in native mode on
      32 bit architectures.
      
      Introduce COMPAT_32BIT_TIME to conditionally compile these
      functions.
      
      Note that turning off 32 bit time_t support requires more
      changes on architecture side. For instance, architecure
      syscall tables need to be updated to drop support for 32 bit
      time_t syscalls.
      Signed-off-by: NDeepa Dinamani <deepa.kernel@gmail.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      17435e5f
    • D
      time: Introduce CONFIG_64BIT_TIME in architectures · d4703dda
      Deepa Dinamani 提交于
      There are a total of 53 system calls (aside from ioctl) that pass a time_t
      or derived data structure as an argument, and in order to extend time_t
      to 64-bit, we have to replace them with new system calls and keep providing
      backwards compatibility.
      
      To avoid adding completely new and untested code for this purpose, we
      introduce a new CONFIG_64BIT_TIME symbol. Every architecture that supports
      new 64 bit time_t syscalls enables this config.
      
      After this is done for all architectures, the CONFIG_64BIT_TIME symbol
      will be deleted.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NDeepa Dinamani <deepa.kernel@gmail.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      d4703dda
    • D
      compat: Enable compat_get/put_timespec64 always · 1c68adf6
      Deepa Dinamani 提交于
      These functions are used in the repurposed compat syscalls
      to provide backward compatibility for using 32 bit time_t
      on 32 bit systems.
      Signed-off-by: NDeepa Dinamani <deepa.kernel@gmail.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      1c68adf6
    • D
      compat: Move compat_timespec/ timeval to compat_time.h · 0d55303c
      Deepa Dinamani 提交于
      All the current architecture specific defines for these
      are the same. Refactor these common defines to a common
      header file.
      
      The new common linux/compat_time.h is also useful as it
      will eventually be used to hold all the defines that
      are needed for compat time types that support non y2038
      safe types. New architectures need not have to define these
      new types as they will only use new y2038 safe syscalls.
      This file can be deleted after y2038 when we stop supporting
      non y2038 safe syscalls.
      
      The patch also requires an operation similar to:
      
      git grep "asm/compat\.h" | cut -d ":" -f 1 |  xargs -n 1 sed -i -e "s%asm/compat.h%linux/compat.h%g"
      
      Cc: acme@kernel.org
      Cc: benh@kernel.crashing.org
      Cc: borntraeger@de.ibm.com
      Cc: catalin.marinas@arm.com
      Cc: cmetcalf@mellanox.com
      Cc: cohuck@redhat.com
      Cc: davem@davemloft.net
      Cc: deller@gmx.de
      Cc: devel@driverdev.osuosl.org
      Cc: gerald.schaefer@de.ibm.com
      Cc: gregkh@linuxfoundation.org
      Cc: heiko.carstens@de.ibm.com
      Cc: hoeppner@linux.vnet.ibm.com
      Cc: hpa@zytor.com
      Cc: jejb@parisc-linux.org
      Cc: jwi@linux.vnet.ibm.com
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-mips@linux-mips.org
      Cc: linux-parisc@vger.kernel.org
      Cc: linuxppc-dev@lists.ozlabs.org
      Cc: linux-s390@vger.kernel.org
      Cc: mark.rutland@arm.com
      Cc: mingo@redhat.com
      Cc: mpe@ellerman.id.au
      Cc: oberpar@linux.vnet.ibm.com
      Cc: oprofile-list@lists.sf.net
      Cc: paulus@samba.org
      Cc: peterz@infradead.org
      Cc: ralf@linux-mips.org
      Cc: rostedt@goodmis.org
      Cc: rric@kernel.org
      Cc: schwidefsky@de.ibm.com
      Cc: sebott@linux.vnet.ibm.com
      Cc: sparclinux@vger.kernel.org
      Cc: sth@linux.vnet.ibm.com
      Cc: ubraun@linux.vnet.ibm.com
      Cc: will.deacon@arm.com
      Cc: x86@kernel.org
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NDeepa Dinamani <deepa.kernel@gmail.com>
      Acked-by: NSteven Rostedt (VMware) <rostedt@goodmis.org>
      Acked-by: NCatalin Marinas <catalin.marinas@arm.com>
      Acked-by: NJames Hogan <jhogan@kernel.org>
      Acked-by: NHelge Deller <deller@gmx.de>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      0d55303c
    • A
      sparc: compat: Allow including asm/compat.h for 32-bit · e4da0d68
      Arnd Bergmann 提交于
      We have several files on sparc that include linux/compat.h and expect
      asm/compat.h not to be included for 32-bit builds, otherwise we get a
      build failure.
      
      Since we need to include asm/compat.h for compat time_t handling on all
      32-bit architectures now, this hides some portions of asm/compat.h in
      order to let the rest of the file get included.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      e4da0d68
    • A
      time: Add an asm-generic/compat.h file · 2b5a9a37
      Arnd Bergmann 提交于
      We have a couple of files that try to include asm/compat.h on
      architectures where this is available. Those should generally use the
      higher-level linux/compat.h file, but that in turn fails to include
      asm/compat.h when CONFIG_COMPAT is disabled, unless we can provide
      that header on all architectures.
      
      This adds the asm/compat.h for all remaining architectures to
      simplify the dependencies.
      
      Architectures that are getting removed in linux-4.17 are not changed
      here, to avoid needless conflicts with the removal patches. Those
      architectures are broken by this patch, but we have already shown
      that they have no users.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      2b5a9a37
    • D
      compat: Make compat helpers independent of CONFIG_COMPAT · 5055c677
      Deepa Dinamani 提交于
      Many of the compat time syscalls are also repurposed as 32 bit
      native syscalls to provide backward compatibility while adding
      new y2038 safe sycalls.
      Enabling the helpers makes this possible.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NDeepa Dinamani <deepa.kernel@gmail.com>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      5055c677
  3. 16 4月, 2018 13 次提交
    • L
      Linux 4.17-rc1 · 60cc43fc
      Linus Torvalds 提交于
      60cc43fc
    • L
      Merge tag 'for-4.17-part2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux · e37563bb
      Linus Torvalds 提交于
      Pull more btrfs updates from David Sterba:
       "We have queued a few more fixes (error handling, log replay,
        softlockup) and the rest is SPDX updates that touche almost all files
        so the diffstat is long"
      
      * tag 'for-4.17-part2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
        btrfs: Only check first key for committed tree blocks
        btrfs: add SPDX header to Kconfig
        btrfs: replace GPL boilerplate by SPDX -- sources
        btrfs: replace GPL boilerplate by SPDX -- headers
        Btrfs: fix loss of prealloc extents past i_size after fsync log replay
        Btrfs: clean up resources during umount after trans is aborted
        btrfs: Fix possible softlock on single core machines
        Btrfs: bail out on error during replay_dir_deletes
        Btrfs: fix NULL pointer dereference in log_dir_items
      e37563bb
    • L
      Merge tag '4.17-rc1SMB3-Fixes' of git://git.samba.org/sfrench/cifs-2.6 · 09c9b0ea
      Linus Torvalds 提交于
      Pull cifs fixes from Steve French:
       "SMB3 fixes, a few for stable, and some important cleanup work from
        Ronnie of the smb3 transport code"
      
      * tag '4.17-rc1SMB3-Fixes' of git://git.samba.org/sfrench/cifs-2.6:
        cifs: change validate_buf to validate_iov
        cifs: remove rfc1002 hardcoded constants from cifs_discard_remaining_data()
        cifs: Change SMB2_open to return an iov for the error parameter
        cifs: add resp_buf_size to the mid_q_entry structure
        smb3.11: replace a 4 with server->vals->header_preamble_size
        cifs: replace a 4 with server->vals->header_preamble_size
        cifs: add pdu_size to the TCP_Server_Info structure
        SMB311: Improve checking of negotiate security contexts
        SMB3: Fix length checking of SMB3.11 negotiate request
        CIFS: add ONCE flag for cifs_dbg type
        cifs: Use ULL suffix for 64-bit constant
        SMB3: Log at least once if tree connect fails during reconnect
        cifs: smb2pdu: Fix potential NULL pointer dereference
      09c9b0ea
    • L
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · f0d98d85
      Linus Torvalds 提交于
      Pull SCSI fixes from James Bottomley:
       "This is a set of minor (and safe changes) that didn't make the initial
        pull request plus some bug fixes.
      
        The status handling code is actually a running regression from the
        previous merge window which had an incomplete fix (now reverted) and
        most of the remaining bug fixes are for problems older than the
        current merge window"
      
      [ Side note: this merge also takes the base kernel git repository to 6+
        million objects for the first time. Technically we hit it a couple of
        merges ago already if you count all the tag objects, but now it
        reaches 6M+ objects reachable from HEAD.
      
        I was joking around that that's when I should switch to 5.0, because
        3.0 happened at the 2M mark, and 4.0 happened at 4M objects. But
        probably not, even if numerology is about as good a reason as any.
      
                                                                    - Linus ]
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
        scsi: devinfo: Add Microsoft iSCSI target to 1024 sector blacklist
        scsi: cxgb4i: silence overflow warning in t4_uld_rx_handler()
        scsi: dpt_i2o: Use after free in I2ORESETCMD ioctl
        scsi: core: Make scsi_result_to_blk_status() recognize CONDITION MET
        scsi: core: Rename __scsi_error_from_host_byte() into scsi_result_to_blk_status()
        Revert "scsi: core: return BLK_STS_OK for DID_OK in __scsi_error_from_host_byte()"
        scsi: aacraid: Insure command thread is not recursively stopped
        scsi: qla2xxx: Correct setting of SAM_STAT_CHECK_CONDITION
        scsi: qla2xxx: correctly shift host byte
        scsi: qla2xxx: Fix race condition between iocb timeout and initialisation
        scsi: qla2xxx: Avoid double completion of abort command
        scsi: qla2xxx: Fix small memory leak in qla2x00_probe_one on probe failure
        scsi: scsi_dh: Don't look for NULL devices handlers by name
        scsi: core: remove redundant assignment to shost->use_blk_mq
      f0d98d85
    • L
      Merge tag 'kbuild-v4.17-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild · ca71b3ba
      Linus Torvalds 提交于
      Pull more Kbuild updates from Masahiro Yamada:
      
       - pass HOSTLDFLAGS when compiling single .c host programs
      
       - build genksyms lexer and parser files instead of using shipped
         versions
      
       - rename *-asn1.[ch] to *.asn1.[ch] for suffix consistency
      
       - let the top .gitignore globally ignore artifacts generated by flex,
         bison, and asn1_compiler
      
       - let the top Makefile globally clean artifacts generated by flex,
         bison, and asn1_compiler
      
       - use safer .SECONDARY marker instead of .PRECIOUS to prevent
         intermediate files from being removed
      
       - support -fmacro-prefix-map option to make __FILE__ a relative path
      
       - fix # escaping to prepare for the future GNU Make release
      
       - clean up deb-pkg by using debian tools instead of handrolled
         source/changes generation
      
       - improve rpm-pkg portability by supporting kernel-install as a
         fallback of new-kernel-pkg
      
       - extend Kconfig listnewconfig target to provide more information
      
      * tag 'kbuild-v4.17-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
        kconfig: extend output of 'listnewconfig'
        kbuild: rpm-pkg: use kernel-install as a fallback for new-kernel-pkg
        Kbuild: fix # escaping in .cmd files for future Make
        kbuild: deb-pkg: split generating packaging and build
        kbuild: use -fmacro-prefix-map to make __FILE__ a relative path
        kbuild: mark $(targets) as .SECONDARY and remove .PRECIOUS markers
        kbuild: rename *-asn1.[ch] to *.asn1.[ch]
        kbuild: clean up *-asn1.[ch] patterns from top-level Makefile
        .gitignore: move *-asn1.[ch] patterns to the top-level .gitignore
        kbuild: add %.dtb.S and %.dtb to 'targets' automatically
        kbuild: add %.lex.c and %.tab.[ch] to 'targets' automatically
        genksyms: generate lexer and parser during build instead of shipping
        kbuild: clean up *.lex.c and *.tab.[ch] patterns from top-level Makefile
        .gitignore: move *.lex.c *.tab.[ch] patterns to the top-level .gitignore
        kbuild: use HOSTLDFLAGS for single .c executables
      ca71b3ba
    • L
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 9fb71c2f
      Linus Torvalds 提交于
      Pull x86 fixes from Thomas Gleixner:
       "A set of fixes and updates for x86:
      
         - Address a swiotlb regression which was caused by the recent DMA
           rework and made driver fail because dma_direct_supported() returned
           false
      
         - Fix a signedness bug in the APIC ID validation which caused invalid
           APIC IDs to be detected as valid thereby bloating the CPU possible
           space.
      
         - Fix inconsisten config dependcy/select magic for the MFD_CS5535
           driver.
      
         - Fix a corruption of the physical address space bits when encryption
           has reduced the address space and late cpuinfo updates overwrite
           the reduced bit information with the original value.
      
         - Dominiks syscall rework which consolidates the architecture
           specific syscall functions so all syscalls can be wrapped with the
           same macros. This allows to switch x86/64 to struct pt_regs based
           syscalls. Extend the clearing of user space controlled registers in
           the entry patch to the lower registers"
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/apic: Fix signedness bug in APIC ID validity checks
        x86/cpu: Prevent cpuinfo_x86::x86_phys_bits adjustment corruption
        x86/olpc: Fix inconsistent MFD_CS5535 configuration
        swiotlb: Use dma_direct_supported() for swiotlb_ops
        syscalls/x86: Adapt syscall_wrapper.h to the new syscall stub naming convention
        syscalls/core, syscalls/x86: Rename struct pt_regs-based sys_*() to __x64_sys_*()
        syscalls/core, syscalls/x86: Clean up compat syscall stub naming convention
        syscalls/core, syscalls/x86: Clean up syscall stub naming convention
        syscalls/x86: Extend register clearing on syscall entry to lower registers
        syscalls/x86: Unconditionally enable 'struct pt_regs' based syscalls on x86_64
        syscalls/x86: Use 'struct pt_regs' based syscall calling for IA32_EMULATION and x32
        syscalls/core: Prepare CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y for compat syscalls
        syscalls/x86: Use 'struct pt_regs' based syscall calling convention for 64-bit syscalls
        syscalls/core: Introduce CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y
        x86/syscalls: Don't pointlessly reload the system call number
        x86/mm: Fix documentation of module mapping range with 4-level paging
        x86/cpuid: Switch to 'static const' specifier
      9fb71c2f
    • L
      Merge branch 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 6b0a02e8
      Linus Torvalds 提交于
      Pull x86 pti updates from Thomas Gleixner:
       "Another series of PTI related changes:
      
         - Remove the manual stack switch for user entries from the idtentry
           code. This debloats entry by 5k+ bytes of text.
      
         - Use the proper types for the asm/bootparam.h defines to prevent
           user space compile errors.
      
         - Use PAGE_GLOBAL for !PCID systems to gain back performance
      
         - Prevent setting of huge PUD/PMD entries when the entries are not
           leaf entries otherwise the entries to which the PUD/PMD points to
           and are populated get lost"
      
      * 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/pgtable: Don't set huge PUD/PMD on non-leaf entries
        x86/pti: Leave kernel text global for !PCID
        x86/pti: Never implicitly clear _PAGE_GLOBAL for kernel image
        x86/pti: Enable global pages for shared areas
        x86/mm: Do not forbid _PAGE_RW before init for __ro_after_init
        x86/mm: Comment _PAGE_GLOBAL mystery
        x86/mm: Remove extra filtering in pageattr code
        x86/mm: Do not auto-massage page protections
        x86/espfix: Document use of _PAGE_GLOBAL
        x86/mm: Introduce "default" kernel PTE mask
        x86/mm: Undo double _PAGE_PSE clearing
        x86/mm: Factor out pageattr _PAGE_GLOBAL setting
        x86/entry/64: Drop idtentry's manual stack switch for user entries
        x86/uapi: Fix asm/bootparam.h userspace compilation errors
      6b0a02e8
    • L
      Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 71b8ebbf
      Linus Torvalds 提交于
      Pull scheduler fixes from Thomas Gleixner:
       "A few scheduler fixes:
      
         - Prevent a bogus warning vs. runqueue clock update flags in
           do_sched_rt_period_timer()
      
         - Simplify the helper functions which handle requests for skipping
           the runqueue clock updat.
      
         - Do not unlock the tunables mutex in the error path of the cpu
           frequency scheduler utils. Its not held.
      
         - Enforce proper alignement for 'struct util_est' in sched_avg to
           prevent a misalignment fault on IA64"
      
      * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched/core: Force proper alignment of 'struct util_est'
        sched/core: Simplify helpers for rq clock update skip requests
        sched/rt: Fix rq->clock_update_flags < RQCF_ACT_SKIP warning
        sched/cpufreq/schedutil: Fix error path mutex unlock
      71b8ebbf
    • L
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 174e7194
      Linus Torvalds 提交于
      Pull more perf updates from Thomas Gleixner:
       "A rather large set of perf updates:
      
        Kernel:
      
         - Fix various initialization issues
      
         - Prevent creating [ku]probes for not CAP_SYS_ADMIN users
      
        Tooling:
      
         - Show only failing syscalls with 'perf trace --failure' (Arnaldo
           Carvalho de Melo)
      
                  e.g: See what 'openat' syscalls are failing:
      
              # perf trace --failure -e openat
               762.323 ( 0.007 ms): VideoCapture/4566 openat(dfd: CWD, filename: /dev/video2) = -1 ENOENT No such file or directory
               <SNIP N /dev/videoN open attempts... sigh, where is that improvised camera lid?!? >
               790.228 ( 0.008 ms): VideoCapture/4566 openat(dfd: CWD, filename: /dev/video63) = -1 ENOENT No such file or directory
              ^C#
      
         - Show information about the event (freq, nr_samples, total
           period/nr_events) in the annotate --tui and --stdio2 'perf
           annotate' output, similar to the first line in the 'perf report
           --tui', but just for the samples for a the annotated symbol
           (Arnaldo Carvalho de Melo)
      
         - Introduce 'perf version --build-options' to show what features were
           linked, aliased as well as a shorter 'perf -vv' (Jin Yao)
      
         - Add a "dso_size" sort order (Kim Phillips)
      
         - Remove redundant ')' in the tracepoint output in 'perf trace'
           (Changbin Du)
      
         - Synchronize x86's cpufeatures.h, no effect on toolss (Arnaldo
           Carvalho de Melo)
      
         - Show group details on the title line in the annotate browser and
           'perf annotate --stdio2' output, so that the per-event columns can
           have headers (Arnaldo Carvalho de Melo)
      
         - Fixup vertical line separating metrics from instructions and
           cleaning unused lines at the bottom, both in the annotate TUI
           browser (Arnaldo Carvalho de Melo)
      
         - Remove duplicated 'samples' in lost samples warning in
           'perf report' (Arnaldo Carvalho de Melo)
      
         - Synchronize i915_drm.h, silencing the perf build process,
           automagically adding support for the new DRM_I915_QUERY ioctl
           (Arnaldo Carvalho de Melo)
      
         - Make auxtrace_queues__add_buffer() allocate struct buffer, from a
           patchkit already applied (Adrian Hunter)
      
         - Fix the --stdio2/TUI annotate output to include group details, be
           it for a recorded '{a,b,f}' explicit event group or when forcing
           group display using 'perf report --group' for a set of events not
           recorded as a group (Arnaldo Carvalho de Melo)
      
         - Fix display artifacts in the ui browser (base class for the
           annotate and main report/top TUI browser) related to the extra
           title lines work (Arnaldo Carvalho de Melo)
      
         - perf auxtrace refactorings, leftovers from a previously partially
           processed patchset (Adrian Hunter)
      
         - Fix the builtin clang build (Sandipan Das, Arnaldo Carvalho de
           Melo)
      
         - Synchronize i915_drm.h, silencing a perf build warning and in the
           process automagically adding support for a new ioctl command
           (Arnaldo Carvalho de Melo)
      
         - Fix a strncpy issue in uprobe tracing"
      
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (36 commits)
        perf/core: Need CAP_SYS_ADMIN to create k/uprobe with perf_event_open()
        tracing/uprobe_event: Fix strncpy corner case
        perf/core: Fix perf_uprobe_init()
        perf/core: Fix perf_kprobe_init()
        perf/core: Fix use-after-free in uprobe_perf_close()
        perf tests clang: Fix function name for clang IR test
        perf clang: Add support for recent clang versions
        perf tools: Fix perf builds with clang support
        perf tools: No need to include namespaces.h in util.h
        perf hists browser: Remove leftover from row returned from refresh
        perf hists browser: Show extra_title_lines in the 'D' debug hotkey
        perf auxtrace: Make auxtrace_queues__add_buffer() do CPU filtering
        tools headers uapi: Synchronize i915_drm.h
        perf report: Remove duplicated 'samples' in lost samples warning
        perf ui browser: Fixup cleaning unused lines at the bottom
        perf annotate browser: Fixup vertical line separating metrics from instructions
        perf annotate: Show group details on the title line
        perf auxtrace: Make auxtrace_queues__add_buffer() allocate struct buffer
        perf/x86/intel: Move regs->flags EXACT bit init
        perf trace: Remove redundant ')'
        ...
      174e7194
    • L
      Merge branch 'efi-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 19ca90de
      Linus Torvalds 提交于
      Pull x86 EFI bootup fixlet from Thomas Gleixner:
       "A single fix for an early boot warning caused by invoking
        this_cpu_has() before SMP initialization"
      
      * 'efi-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/mm: Fix bogus warning during EFI bootup, use boot_cpu_has() instead of this_cpu_has() in build_cr3_noflush()
      19ca90de
    • L
      Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 68d54d3f
      Linus Torvalds 提交于
      Pull irq affinity fixes from Thomas Gleixner:
      
        - Fix error path handling in the affinity spreading code
      
        - Make affinity spreading smarter to avoid issues on systems which
          claim to have hotpluggable CPUs while in fact they can't hotplug
          anything.
      
          So instead of trying to spread the vectors (and thereby the
          associated device queues) to all possibe CPUs, spread them on all
          present CPUs first. If there are left over vectors after that first
          step they are spread among the possible, but not present CPUs which
          keeps the code backwards compatible for virtual decives and NVME
          which allocate a queue per possible CPU, but makes the spreading
          smarter for devices which have less queues than possible or present
          CPUs.
      
      * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        genirq/affinity: Spread irq vectors among present CPUs as far as possible
        genirq/affinity: Allow irq spreading from a given starting point
        genirq/affinity: Move actual irq vector spreading into a helper function
        genirq/affinity: Rename *node_to_possible_cpumask as *node_to_cpumask
        genirq/affinity: Don't return with empty affinity masks on error
      68d54d3f
    • L
      Merge tag 'for-linus' of git://github.com/openrisc/linux · 9dceab89
      Linus Torvalds 提交于
      Pull OpenRISC fixlet from Stafford Horne:
       "Just one small thing here, it came in a while back but I didnt have
        anything in my 4.16 queue, still its the only thing for 4.17 so
        sending it alone.
      
        Small cleanup: remove unused __ARCH_HAVE_MMU define"
      
      * tag 'for-linus' of git://github.com/openrisc/linux:
        openrisc: remove unused __ARCH_HAVE_MMU define
      9dceab89
    • L
      Merge tag 'powerpc-4.17-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · b1cb4f93
      Linus Torvalds 提交于
      Pull powerpc fixes from Michael Ellerman:
      
       - Fix crashes when loading modules built with a different
         CONFIG_RELOCATABLE value by adding CONFIG_RELOCATABLE to vermagic.
      
       - Fix busy loops in the OPAL NVRAM driver if we get certain error
         conditions from firmware.
      
       - Remove tlbie trace points from KVM code that's called in real mode,
         because it causes crashes.
      
       - Fix checkstops caused by invalid tlbiel on Power9 Radix.
      
       - Ensure the set of CPU features we "know" are always enabled is
         actually the minimal set when we build with support for firmware
         supplied CPU features.
      
      Thanks to: Aneesh Kumar K.V, Anshuman Khandual, Nicholas Piggin.
      
      * tag 'powerpc-4.17-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc/64s: Fix CPU_FTRS_ALWAYS vs DT CPU features
        powerpc/mm/radix: Fix checkstops caused by invalid tlbiel
        KVM: PPC: Book3S HV: trace_tlbie must not be called in realmode
        powerpc/8xx: Fix build with hugetlbfs enabled
        powerpc/powernv: Fix OPAL NVRAM driver OPAL_BUSY loops
        powerpc/powernv: define a standard delay for OPAL_BUSY type retry loops
        powerpc/fscr: Enable interrupts earlier before calling get_user()
        powerpc/64s: Fix section mismatch warnings from setup_rfi_flush()
        powerpc/modules: Fix crashes by adding CONFIG_RELOCATABLE to vermagic
      b1cb4f93
  4. 14 4月, 2018 3 次提交
    • L
      Merge branch 'akpm' (patches from Andrew) · 18b7fd1c
      Linus Torvalds 提交于
      Merge yet more updates from Andrew Morton:
      
       - various hotfixes
      
       - kexec_file updates and feature work
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (27 commits)
        kernel/kexec_file.c: move purgatories sha256 to common code
        kernel/kexec_file.c: allow archs to set purgatory load address
        kernel/kexec_file.c: remove mis-use of sh_offset field during purgatory load
        kernel/kexec_file.c: remove unneeded variables in kexec_purgatory_setup_sechdrs
        kernel/kexec_file.c: remove unneeded for-loop in kexec_purgatory_setup_sechdrs
        kernel/kexec_file.c: split up __kexec_load_puragory
        kernel/kexec_file.c: use read-only sections in arch_kexec_apply_relocations*
        kernel/kexec_file.c: search symbols in read-only kexec_purgatory
        kernel/kexec_file.c: make purgatory_info->ehdr const
        kernel/kexec_file.c: remove checks in kexec_purgatory_load
        include/linux/kexec.h: silence compile warnings
        kexec_file, x86: move re-factored code to generic side
        x86: kexec_file: clean up prepare_elf64_headers()
        x86: kexec_file: lift CRASH_MAX_RANGES limit on crash_mem buffer
        x86: kexec_file: remove X86_64 dependency from prepare_elf64_headers()
        x86: kexec_file: purge system-ram walking from prepare_elf64_headers()
        kexec_file,x86,powerpc: factor out kexec_file_ops functions
        kexec_file: make use of purgatory optional
        proc: revalidate misc dentries
        mm, slab: reschedule cache_reap() on the same CPU
        ...
      18b7fd1c
    • P
      kernel/kexec_file.c: move purgatories sha256 to common code · df6f2801
      Philipp Rudo 提交于
      The code to verify the new kernels sha digest is applicable for all
      architectures.  Move it to common code.
      
      One problem is the string.c implementation on x86.  Currently sha256
      includes x86/boot/string.h which defines memcpy and memset to be gcc
      builtins.  By moving the sha256 implementation to common code and
      changing the include to linux/string.h both functions are no longer
      defined.  Thus definitions have to be provided in x86/purgatory/string.c
      
      Link: http://lkml.kernel.org/r/20180321112751.22196-12-prudo@linux.vnet.ibm.comSigned-off-by: NPhilipp Rudo <prudo@linux.vnet.ibm.com>
      Acked-by: NDave Young <dyoung@redhat.com>
      Cc: AKASHI Takahiro <takahiro.akashi@linaro.org>
      Cc: Eric Biederman <ebiederm@xmission.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Thiago Jung Bauermann <bauerman@linux.vnet.ibm.com>
      Cc: Vivek Goyal <vgoyal@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      df6f2801
    • P
      kernel/kexec_file.c: allow archs to set purgatory load address · 3be3f61d
      Philipp Rudo 提交于
      For s390 new kernels are loaded to fixed addresses in memory before they
      are booted.  With the current code this is a problem as it assumes the
      kernel will be loaded to an 'arbitrary' address.  In particular,
      kexec_locate_mem_hole searches for a large enough memory region and sets
      the load address (kexec_bufer->mem) to it.
      
      Luckily there is a simple workaround for this problem.  By returning 1
      in arch_kexec_walk_mem, kexec_locate_mem_hole is turned off.  This
      allows the architecture to set kbuf->mem by hand.  While the trick works
      fine for the kernel it does not for the purgatory as here the
      architectures don't have access to its kexec_buffer.
      
      Give architectures access to the purgatories kexec_buffer by changing
      kexec_load_purgatory to take a pointer to it.  With this change
      architectures have access to the buffer and can edit it as they need.
      
      A nice side effect of this change is that we can get rid of the
      purgatory_info->purgatory_load_address field.  As now the information
      stored there can directly be accessed from kbuf->mem.
      
      Link: http://lkml.kernel.org/r/20180321112751.22196-11-prudo@linux.vnet.ibm.comSigned-off-by: NPhilipp Rudo <prudo@linux.vnet.ibm.com>
      Reviewed-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      Acked-by: NDave Young <dyoung@redhat.com>
      Cc: AKASHI Takahiro <takahiro.akashi@linaro.org>
      Cc: Eric Biederman <ebiederm@xmission.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Thiago Jung Bauermann <bauerman@linux.vnet.ibm.com>
      Cc: Vivek Goyal <vgoyal@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      3be3f61d