1. 06 6月, 2020 21 次提交
    • S
      vhost/vsock: fix packet delivery order to monitoring devices · 367483e9
      Stefano Garzarella 提交于
      [ Upstream commit 107bc0766b9feb5113074c753735a3f115c2141f ]
      
      We want to deliver packets to monitoring devices before it is
      put in the virtqueue, to avoid that replies can appear in the
      packet capture before the transmitted packet.
      Signed-off-by: NStefano Garzarella <sgarzare@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      367483e9
    • X
      configfs: fix config_item refcnt leak in configfs_rmdir() · f58c0b0b
      Xiyu Yang 提交于
      [ Upstream commit 8aebfffacfa379ba400da573a5bf9e49634e38cb ]
      
      configfs_rmdir() invokes configfs_get_config_item(), which returns a
      reference of the specified config_item object to "parent_item" with
      increased refcnt.
      
      When configfs_rmdir() returns, local variable "parent_item" becomes
      invalid, so the refcount should be decreased to keep refcount balanced.
      
      The reference counting issue happens in one exception handling path of
      configfs_rmdir(). When down_write_killable() fails, the function forgets
      to decrease the refcnt increased by configfs_get_config_item(), causing
      a refcnt leak.
      
      Fix this issue by calling config_item_put() when down_write_killable()
      fails.
      Signed-off-by: NXiyu Yang <xiyuyang19@fudan.edu.cn>
      Signed-off-by: NXin Tan <tanxin.ctf@gmail.com>
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      f58c0b0b
    • Q
      scsi: qla2xxx: Delete all sessions before unregister local nvme port · 269cb7d2
      Quinn Tran 提交于
      [ Upstream commit c48f849d3f7a4ec1025105f446e29d395c4dcc2f ]
      
      Delete all sessions before unregistering local nvme port.  This allows nvme
      layer to decrement all active rport count down to zero.  Once the count is
      down to zero, nvme would call qla to continue with the npiv port deletion.
      
      PID: 27448  TASK: ffff9e34b777c1c0  CPU: 0   COMMAND: "qaucli"
       0 [ffff9e25e84abbd8] __schedule at ffffffff977858ca
       1 [ffff9e25e84abc68] schedule at ffffffff97785d79
       2 [ffff9e25e84abc78] schedule_timeout at ffffffff97783881
       3 [ffff9e25e84abd28] wait_for_completion at ffffffff9778612d
       4 [ffff9e25e84abd88] qla_nvme_delete at ffffffffc0e3024e [qla2xxx]
       5 [ffff9e25e84abda8] qla24xx_vport_delete at ffffffffc0e024b9 [qla2xxx]
       6 [ffff9e25e84abdf0] fc_vport_terminate at ffffffffc011c247 [scsi_transport_fc]
       7 [ffff9e25e84abe28] store_fc_host_vport_delete at ffffffffc011cd94 [scsi_transport_fc]
       8 [ffff9e25e84abe70] dev_attr_store at ffffffff974b376b
       9 [ffff9e25e84abe80] sysfs_kf_write at ffffffff972d9a92
      10 [ffff9e25e84abe90] kernfs_fop_write at ffffffff972d907b
      11 [ffff9e25e84abec8] vfs_write at ffffffff9724c790
      12 [ffff9e25e84abf08] sys_write at ffffffff9724d55f
      13 [ffff9e25e84abf50] system_call_fastpath at ffffffff97792ed2
          RIP: 00007fc0bd81a6fd  RSP: 00007ffff78d9648  RFLAGS: 00010202
          RAX: 0000000000000001  RBX: 0000000000000022  RCX: 00007ffff78d96e0
          RDX: 0000000000000022  RSI: 00007ffff78d94e0  RDI: 0000000000000008
          RBP: 00007ffff78d9440   R8: 0000000000000000   R9: 00007fc0bd48b2cd
          R10: 0000000000000017  R11: 0000000000000293  R12: 0000000000000000
          R13: 00005624e4dac840  R14: 00005624e4da9a10  R15: 0000000000000000
          ORIG_RAX: 0000000000000001  CS: 0033  SS: 002b
      
      Link: https://lore.kernel.org/r/20200331104015.24868-4-njavali@marvell.comReviewed-by: NHimanshu Madhani <himanshu.madhani@oracle.com>
      Signed-off-by: NQuinn Tran <qutran@marvell.com>
      Signed-off-by: NNilesh Javali <njavali@marvell.com>
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      269cb7d2
    • A
      scsi: qla2xxx: Fix hang when issuing nvme disconnect-all in NPIV · 95573899
      Arun Easi 提交于
      [ Upstream commit 45a76264c26fd8cfd0c9746196892d9b7e2657ee ]
      
      In NPIV environment, a NPIV host may use a queue pair created by base host
      or other NPIVs, so the check for a queue pair created by this NPIV is not
      correct, and can cause an abort to fail, which in turn means the NVME
      command not returned.  This leads to hang in nvme_fc layer in
      nvme_fc_delete_association() which waits for all I/Os to be returned, which
      is seen as hang in the application.
      
      Link: https://lore.kernel.org/r/20200331104015.24868-3-njavali@marvell.comReviewed-by: NHimanshu Madhani <himanshu.madhani@oracle.com>
      Signed-off-by: NArun Easi <aeasi@marvell.com>
      Signed-off-by: NNilesh Javali <njavali@marvell.com>
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      95573899
    • J
      HID: alps: ALPS_1657 is too specific; use U1_UNICORN_LEGACY instead · 78052116
      Jiri Kosina 提交于
      [ Upstream commit 185af3e775b693f773d9a4b5a8c3cda69fc8ca0f ]
      
      HID_DEVICE_ID_ALPS_1657 PID is too specific, as there are many other
      ALPS hardware IDs using this particular touchpad.
      
      Rename the identifier to HID_DEVICE_ID_ALPS_U1_UNICORN_LEGACY in order
      to describe reality better.
      
      Fixes: 640e403b1fd24 ("HID: alps: Add AUI1657 device ID")
      Reported-by: NXiaojian Cao <xiaojian.cao@cn.alps.com>
      Signed-off-by: NJiri Kosina <jkosina@suse.cz>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      78052116
    • A
      HID: alps: Add AUI1657 device ID · 49f94737
      Artem Borisov 提交于
      [ Upstream commit 640e403b1fd24e7f31ac6f29f0b6a21d285ed729 ]
      
      This device is used on Lenovo V130-15IKB variants and uses
      the same registers as U1.
      Signed-off-by: NArtem Borisov <dedsa2002@gmail.com>
      Signed-off-by: NJiri Kosina <jkosina@suse.cz>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      49f94737
    • S
      HID: multitouch: add eGalaxTouch P80H84 support · a6fa140e
      Sebastian Reichel 提交于
      [ Upstream commit f9e82295eec141a0569649d400d249333d74aa91 ]
      
      Add support for P80H84 touchscreen from eGalaxy:
      
        idVendor           0x0eef D-WAV Scientific Co., Ltd
        idProduct          0xc002
        iManufacturer           1 eGalax Inc.
        iProduct                2 eGalaxTouch P80H84 2019 vDIVA_1204_T01 k4.02.146
      Signed-off-by: NSebastian Reichel <sebastian.reichel@collabora.com>
      Signed-off-by: NJiri Kosina <jkosina@suse.cz>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      a6fa140e
    • F
      gcc-common.h: Update for GCC 10 · eeb8a536
      Frédéric Pierret (fepitre) 提交于
      [ Upstream commit c7527373fe28f97d8a196ab562db5589be0d34b9 ]
      
      Remove "params.h" include, which has been dropped in GCC 10.
      
      Remove is_a_helper() macro, which is now defined in gimple.h, as seen
      when running './scripts/gcc-plugin.sh g++ g++ gcc':
      
      In file included from <stdin>:1:
      ./gcc-plugins/gcc-common.h:852:13: error: redefinition of ‘static bool is_a_helper<T>::test(U*) [with U = const gimple; T = const ggoto*]’
        852 | inline bool is_a_helper<const ggoto *>::test(const_gimple gs)
            |             ^~~~~~~~~~~~~~~~~~~~~~~~~~
      In file included from ./gcc-plugins/gcc-common.h:125,
                       from <stdin>:1:
      /usr/lib/gcc/x86_64-redhat-linux/10/plugin/include/gimple.h:1037:1: note: ‘static bool is_a_helper<T>::test(U*) [with U = const gimple; T = const ggoto*]’ previously declared here
       1037 | is_a_helper <const ggoto *>::test (const gimple *gs)
            | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
      
      Add -Wno-format-diag to scripts/gcc-plugins/Makefile to avoid
      meaningless warnings from error() formats used by plugins:
      
      scripts/gcc-plugins/structleak_plugin.c: In function ‘int plugin_init(plugin_name_args*, plugin_gcc_version*)’:
      scripts/gcc-plugins/structleak_plugin.c:253:12: warning: unquoted sequence of 2 consecutive punctuation characters ‘'-’ in format [-Wformat-diag]
        253 |   error(G_("unknown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
            |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      Signed-off-by: NFrédéric Pierret (fepitre) <frederic.pierret@qubes-os.org>
      Link: https://lore.kernel.org/r/20200407113259.270172-1-frederic.pierret@qubes-os.org
      [kees: include -Wno-format-diag for plugin builds]
      Signed-off-by: NKees Cook <keescook@chromium.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      eeb8a536
    • R
      ubi: Fix seq_file usage in detailed_erase_block_info debugfs file · 72e1e8f8
      Richard Weinberger 提交于
      [ Upstream commit 0e7572cffe442290c347e779bf8bd4306bb0aa7c ]
      
      3bfa7e141b0b ("fs/seq_file.c: seq_read(): add info message about buggy .next functions")
      showed that we don't use seq_file correctly.
      So make sure that our ->next function always updates the position.
      
      Fixes: 7bccd12d ("ubi: Add debugfs file for tracking PEB state")
      Signed-off-by: NRichard Weinberger <richard@nod.at>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      72e1e8f8
    • C
      i2c: mux: demux-pinctrl: Fix an error handling path in 'i2c_demux_pinctrl_probe()' · 2911292d
      Christophe JAILLET 提交于
      [ Upstream commit e9d1a0a41d4486955e96552293c1fcf1fce61602 ]
      
      A call to 'i2c_demux_deactivate_master()' is missing in the error handling
      path, as already done in the remove function.
      
      Fixes: 50a5ba87 ("i2c: mux: demux-pinctrl: add driver")
      Signed-off-by: NChristophe JAILLET <christophe.jaillet@wanadoo.fr>
      Signed-off-by: NWolfram Sang <wsa@kernel.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      2911292d
    • A
      iommu/amd: Fix over-read of ACPI UID from IVRS table · 0d5a8b37
      Alexander Monakov 提交于
      [ Upstream commit e461b8c991b9202b007ea2059d953e264240b0c9 ]
      
      IVRS parsing code always tries to read 255 bytes from memory when
      retrieving ACPI device path, and makes an assumption that firmware
      provides a zero-terminated string. Both of those are bugs: the entry
      is likely to be shorter than 255 bytes, and zero-termination is not
      guaranteed.
      
      With Acer SF314-42 firmware these issues manifest visibly in dmesg:
      
      AMD-Vi: ivrs, add hid:AMDI0020, uid:\_SB.FUR0\xf0\xa5, rdevid:160
      AMD-Vi: ivrs, add hid:AMDI0020, uid:\_SB.FUR1\xf0\xa5, rdevid:160
      AMD-Vi: ivrs, add hid:AMDI0020, uid:\_SB.FUR2\xf0\xa5, rdevid:160
      AMD-Vi: ivrs, add hid:AMDI0020, uid:\_SB.FUR3>\x83e\x8d\x9a\xd1...
      
      The first three lines show how the code over-reads adjacent table
      entries into the UID, and in the last line it even reads garbage data
      beyond the end of the IVRS table itself.
      
      Since each entry has the length of the UID (uidl member of ivhd_entry
      struct), use that for memcpy, and manually add a zero terminator.
      
      Avoid zero-filling hid and uid arrays up front, and instead ensure
      the uid array is always zero-terminated. No change needed for the hid
      array, as it was already properly zero-terminated.
      
      Fixes: 2a0cb4e2 ("iommu/amd: Add new map for storing IVHD dev entry type HID")
      Signed-off-by: NAlexander Monakov <amonakov@ispras.ru>
      Cc: Joerg Roedel <joro@8bytes.org>
      Cc: iommu@lists.linux-foundation.org
      Link: https://lore.kernel.org/r/20200511102352.1831-1-amonakov@ispras.ruSigned-off-by: NJoerg Roedel <jroedel@suse.de>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      0d5a8b37
    • C
      ubifs: remove broken lazytime support · f7dea8c1
      Christoph Hellwig 提交于
      [ Upstream commit ecf84096a526f2632ee85c32a3d05de3fa60ce80 ]
      
      When "ubifs: introduce UBIFS_ATIME_SUPPORT to ubifs" introduced atime
      support to ubifs, it also added lazytime support.  As far as I can tell
      the lazytime support is terminally broken, as it causes
      mark_inode_dirty_sync to be called from __writeback_single_inode, which
      will then trigger the locking assert in ubifs_dirty_inode.  Just remove
      the broken lazytime support for now, it can be added back later,
      especially as some infrastructure changes should make that easier soon.
      
      Fixes: 8c1c5f26 ("ubifs: introduce UBIFS_ATIME_SUPPORT to ubifs")
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NRichard Weinberger <richard@nod.at>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      f7dea8c1
    • A
      fix multiplication overflow in copy_fdtable() · 438a9af2
      Al Viro 提交于
      [ Upstream commit 4e89b7210403fa4a8acafe7c602b6212b7af6c3b ]
      
      cpy and set really should be size_t; we won't get an overflow on that,
      since sysctl_nr_open can't be set above ~(size_t)0 / sizeof(void *),
      so nr that would've managed to overflow size_t on that multiplication
      won't get anywhere near copy_fdtable() - we'll fail with EMFILE
      before that.
      
      Cc: stable@kernel.org # v2.6.25+
      Fixes: 9cfe015a (get rid of NR_OPEN and introduce a sysctl_nr_open)
      Reported-by: NThiago Macieira <thiago.macieira@intel.com>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      438a9af2
    • M
      mtd: spinand: Propagate ECC information to the MTD structure · 8fce6f0e
      Miquel Raynal 提交于
      [ Upstream commit 3507273d5a4d3c2e46f9d3f9ed9449805f5dff07 ]
      
      This is done by default in the raw NAND core (nand_base.c) but was
      missing in the SPI-NAND core. Without these two lines the ecc_strength
      and ecc_step_size values are not exported to the user through sysfs.
      
      Fixes: 7529df46 ("mtd: nand: Add core infrastructure to support SPI NANDs")
      Cc: stable@vger.kernel.org
      Signed-off-by: NMiquel Raynal <miquel.raynal@bootlin.com>
      Reviewed-by: NBoris Brezillon <boris.brezillon@collabora.com>
      Signed-off-by: NRichard Weinberger <richard@nod.at>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      8fce6f0e
    • R
      ima: Fix return value of ima_write_policy() · ebafb2b0
      Roberto Sassu 提交于
      [ Upstream commit 2e3a34e9f409ebe83d1af7cd2f49fca7af97dfac ]
      
      This patch fixes the return value of ima_write_policy() when a new policy
      is directly passed to IMA and the current policy requires appraisal of the
      file containing the policy. Currently, if appraisal is not in ENFORCE mode,
      ima_write_policy() returns 0 and leads user space applications to an
      endless loop. Fix this issue by denying the operation regardless of the
      appraisal mode.
      
      Cc: stable@vger.kernel.org # 4.10.x
      Fixes: 19f8a847 ("ima: measure and appraise the IMA policy itself")
      Signed-off-by: NRoberto Sassu <roberto.sassu@huawei.com>
      Reviewed-by: NKrzysztof Struczynski <krzysztof.struczynski@huawei.com>
      Signed-off-by: NMimi Zohar <zohar@linux.ibm.com>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      ebafb2b0
    • R
      evm: Check also if *tfm is an error pointer in init_desc() · f9392fce
      Roberto Sassu 提交于
      [ Upstream commit 53de3b080d5eae31d0de219617155dcc34e7d698 ]
      
      This patch avoids a kernel panic due to accessing an error pointer set by
      crypto_alloc_shash(). It occurs especially when there are many files that
      require an unsupported algorithm, as it would increase the likelihood of
      the following race condition:
      
      Task A: *tfm = crypto_alloc_shash() <= error pointer
      Task B: if (*tfm == NULL) <= *tfm is not NULL, use it
      Task B: rc = crypto_shash_init(desc) <= panic
      Task A: *tfm = NULL
      
      This patch uses the IS_ERR_OR_NULL macro to determine whether or not a new
      crypto context must be created.
      
      Cc: stable@vger.kernel.org
      Fixes: d46eb369 ("evm: crypto hash replaced by shash")
      Co-developed-by: NKrzysztof Struczynski <krzysztof.struczynski@huawei.com>
      Signed-off-by: NKrzysztof Struczynski <krzysztof.struczynski@huawei.com>
      Signed-off-by: NRoberto Sassu <roberto.sassu@huawei.com>
      Signed-off-by: NMimi Zohar <zohar@linux.ibm.com>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      f9392fce
    • R
      ima: Set file->f_mode instead of file->f_flags in ima_calc_file_hash() · 95f4bc0e
      Roberto Sassu 提交于
      [ Upstream commit 0014cc04e8ec077dc482f00c87dfd949cfe2b98f ]
      
      Commit a408e4a86b36 ("ima: open a new file instance if no read
      permissions") tries to create a new file descriptor to calculate a file
      digest if the file has not been opened with O_RDONLY flag. However, if a
      new file descriptor cannot be obtained, it sets the FMODE_READ flag to
      file->f_flags instead of file->f_mode.
      
      This patch fixes this issue by replacing f_flags with f_mode as it was
      before that commit.
      
      Cc: stable@vger.kernel.org # 4.20.x
      Fixes: a408e4a86b36 ("ima: open a new file instance if no read permissions")
      Signed-off-by: NRoberto Sassu <roberto.sassu@huawei.com>
      Reviewed-by: NGoldwyn Rodrigues <rgoldwyn@suse.com>
      Signed-off-by: NMimi Zohar <zohar@linux.ibm.com>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      95f4bc0e
    • V
      riscv: set max_pfn to the PFN of the last page · 649f607e
      Vincent Chen 提交于
      commit c749bb2d554825e007cbc43b791f54e124dadfce upstream.
      
      The current max_pfn equals to zero. In this case, I found it caused users
      cannot get some page information through /proc such as kpagecount in v5.6
      kernel because of new sanity checks. The following message is displayed by
      stress-ng test suite with the command "stress-ng --verbose --physpage 1 -t
      1" on HiFive unleashed board.
      
       # stress-ng --verbose --physpage 1 -t 1
       stress-ng: debug: [109] 4 processors online, 4 processors configured
       stress-ng: info: [109] dispatching hogs: 1 physpage
       stress-ng: debug: [109] cache allocate: reducing cache level from L3 (too high) to L0
       stress-ng: debug: [109] get_cpu_cache: invalid cache_level: 0
       stress-ng: info: [109] cache allocate: using built-in defaults as no suitable cache found
       stress-ng: debug: [109] cache allocate: default cache size: 2048K
       stress-ng: debug: [109] starting stressors
       stress-ng: debug: [109] 1 stressor spawned
       stress-ng: debug: [110] stress-ng-physpage: started [110] (instance 0)
       stress-ng: error: [110] stress-ng-physpage: cannot read page count for address 0x3fd34de000 in /proc/kpagecount, errno=0 (Success)
       stress-ng: error: [110] stress-ng-physpage: cannot read page count for address 0x3fd32db078 in /proc/kpagecount, errno=0 (Success)
       ...
       stress-ng: error: [110] stress-ng-physpage: cannot read page count for address 0x3fd32db078 in /proc/kpagecount, errno=0 (Success)
       stress-ng: debug: [110] stress-ng-physpage: exited [110] (instance 0)
       stress-ng: debug: [109] process [110] terminated
       stress-ng: info: [109] successful run completed in 1.00s
       #
      
      After applying this patch, the kernel can pass the test.
      
       # stress-ng --verbose --physpage 1 -t 1
       stress-ng: debug: [104] 4 processors online, 4 processors configured stress-ng: info: [104] dispatching hogs: 1 physpage
       stress-ng: info: [104] cache allocate: using defaults, can't determine cache details from sysfs
       stress-ng: debug: [104] cache allocate: default cache size: 2048K
       stress-ng: debug: [104] starting stressors
       stress-ng: debug: [104] 1 stressor spawned
       stress-ng: debug: [105] stress-ng-physpage: started [105] (instance 0) stress-ng: debug: [105] stress-ng-physpage: exited [105] (instance 0) stress-ng: debug: [104] process [105] terminated
       stress-ng: info: [104] successful run completed in 1.01s
       #
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NVincent Chen <vincent.chen@sifive.com>
      Reviewed-by: NAnup Patel <anup@brainfault.org>
      Reviewed-by: NYash Shah <yash.shah@sifive.com>
      Tested-by: NYash Shah <yash.shah@sifive.com>
      Signed-off-by: NPalmer Dabbelt <palmerdabbelt@google.com>
      [Palmer: back-ported to 4.19]
      Signed-off-by: NPalmer Dabbelt <palmerdabbelt@google.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      649f607e
    • K
      i2c: dev: Fix the race between the release of i2c_dev and cdev · 474d98d8
      Kevin Hao 提交于
      commit 1413ef638abae4ab5621901cf4d8ef08a4a48ba6 upstream.
      
      The struct cdev is embedded in the struct i2c_dev. In the current code,
      we would free the i2c_dev struct directly in put_i2c_dev(), but the
      cdev is manged by a kobject, and the release of it is not predictable.
      So it is very possible that the i2c_dev is freed before the cdev is
      entirely released. We can easily get the following call trace with
      CONFIG_DEBUG_KOBJECT_RELEASE and CONFIG_DEBUG_OBJECTS_TIMERS enabled.
        ODEBUG: free active (active state 0) object type: timer_list hint: delayed_work_timer_fn+0x0/0x38
        WARNING: CPU: 19 PID: 1 at lib/debugobjects.c:325 debug_print_object+0xb0/0xf0
        Modules linked in:
        CPU: 19 PID: 1 Comm: swapper/0 Tainted: G        W         5.2.20-yocto-standard+ #120
        Hardware name: Marvell OcteonTX CN96XX board (DT)
        pstate: 80c00089 (Nzcv daIf +PAN +UAO)
        pc : debug_print_object+0xb0/0xf0
        lr : debug_print_object+0xb0/0xf0
        sp : ffff00001292f7d0
        x29: ffff00001292f7d0 x28: ffff800b82151788
        x27: 0000000000000001 x26: ffff800b892c0000
        x25: ffff0000124a2558 x24: 0000000000000000
        x23: ffff00001107a1d8 x22: ffff0000116b5088
        x21: ffff800bdc6afca8 x20: ffff000012471ae8
        x19: ffff00001168f2c8 x18: 0000000000000010
        x17: 00000000fd6f304b x16: 00000000ee79de43
        x15: ffff800bc0e80568 x14: 79616c6564203a74
        x13: 6e6968207473696c x12: 5f72656d6974203a
        x11: ffff0000113f0018 x10: 0000000000000000
        x9 : 000000000000001f x8 : 0000000000000000
        x7 : ffff0000101294cc x6 : 0000000000000000
        x5 : 0000000000000000 x4 : 0000000000000001
        x3 : 00000000ffffffff x2 : 0000000000000000
        x1 : 387fc15c8ec0f200 x0 : 0000000000000000
        Call trace:
         debug_print_object+0xb0/0xf0
         __debug_check_no_obj_freed+0x19c/0x228
         debug_check_no_obj_freed+0x1c/0x28
         kfree+0x250/0x440
         put_i2c_dev+0x68/0x78
         i2cdev_detach_adapter+0x60/0xc8
         i2cdev_notifier_call+0x3c/0x70
         notifier_call_chain+0x8c/0xe8
         blocking_notifier_call_chain+0x64/0x88
         device_del+0x74/0x380
         device_unregister+0x54/0x78
         i2c_del_adapter+0x278/0x2d0
         unittest_i2c_bus_remove+0x3c/0x80
         platform_drv_remove+0x30/0x50
         device_release_driver_internal+0xf4/0x1c0
         driver_detach+0x58/0xa0
         bus_remove_driver+0x84/0xd8
         driver_unregister+0x34/0x60
         platform_driver_unregister+0x20/0x30
         of_unittest_overlay+0x8d4/0xbe0
         of_unittest+0xae8/0xb3c
         do_one_initcall+0xac/0x450
         do_initcall_level+0x208/0x224
         kernel_init_freeable+0x2d8/0x36c
         kernel_init+0x18/0x108
         ret_from_fork+0x10/0x1c
        irq event stamp: 3934661
        hardirqs last  enabled at (3934661): [<ffff00001009fa04>] debug_exception_exit+0x4c/0x58
        hardirqs last disabled at (3934660): [<ffff00001009fb14>] debug_exception_enter+0xa4/0xe0
        softirqs last  enabled at (3934654): [<ffff000010081d94>] __do_softirq+0x46c/0x628
        softirqs last disabled at (3934649): [<ffff0000100b4a1c>] irq_exit+0x104/0x118
      
      This is a common issue when using cdev embedded in a struct.
      Fortunately, we already have a mechanism to solve this kind of issue.
      Please see commit 233ed09d ("chardev: add helper function to
      register char devs with a struct device") for more detail.
      
      In this patch, we choose to embed the struct device into the i2c_dev,
      and use the API provided by the commit 233ed09d to make sure that
      the release of i2c_dev and cdev are in sequence.
      Signed-off-by: NKevin Hao <haokexin@gmail.com>
      Signed-off-by: NWolfram Sang <wsa@the-dreams.de>
      Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      474d98d8
    • A
      ubsan: build ubsan.c more conservatively · df1802c3
      Arnd Bergmann 提交于
      commit af700eaed0564d5d3963a7a51cb0843629d7fe3d upstream.
      
      objtool points out several conditions that it does not like, depending
      on the combination with other configuration options and compiler
      variants:
      
      stack protector:
        lib/ubsan.o: warning: objtool: __ubsan_handle_type_mismatch()+0xbf: call to __stack_chk_fail() with UACCESS enabled
        lib/ubsan.o: warning: objtool: __ubsan_handle_type_mismatch_v1()+0xbe: call to __stack_chk_fail() with UACCESS enabled
      
      stackleak plugin:
        lib/ubsan.o: warning: objtool: __ubsan_handle_type_mismatch()+0x4a: call to stackleak_track_stack() with UACCESS enabled
        lib/ubsan.o: warning: objtool: __ubsan_handle_type_mismatch_v1()+0x4a: call to stackleak_track_stack() with UACCESS enabled
      
      kasan:
        lib/ubsan.o: warning: objtool: __ubsan_handle_type_mismatch()+0x25: call to memcpy() with UACCESS enabled
        lib/ubsan.o: warning: objtool: __ubsan_handle_type_mismatch_v1()+0x25: call to memcpy() with UACCESS enabled
      
      The stackleak and kasan options just need to be disabled for this file
      as we do for other files already.  For the stack protector, we already
      attempt to disable it, but this fails on clang because the check is
      mixed with the gcc specific -fno-conserve-stack option.  According to
      Andrey Ryabinin, that option is not even needed, dropping it here fixes
      the stackprotector issue.
      
      Link: http://lkml.kernel.org/r/20190722125139.1335385-1-arnd@arndb.de
      Link: https://lore.kernel.org/lkml/20190617123109.667090-1-arnd@arndb.de/t/
      Link: https://lore.kernel.org/lkml/20190722091050.2188664-1-arnd@arndb.de/t/
      Fixes: d08965a27e84 ("x86/uaccess, ubsan: Fix UBSAN vs. SMAP")
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Reviewed-by: NAndrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Josh Poimboeuf <jpoimboe@redhat.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Dmitry Vyukov <dvyukov@google.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: Matthew Wilcox <willy@infradead.org>
      Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
      Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      df1802c3
    • P
      x86/uaccess, ubsan: Fix UBSAN vs. SMAP · 600addbf
      Peter Zijlstra 提交于
      commit d08965a27e84ca090b504844d50c24fc98587b11 upstream.
      
      UBSAN can insert extra code in random locations; including AC=1
      sections. Typically this code is not safe and needs wrapping.
      
      So far, only __ubsan_handle_type_mismatch* have been observed in AC=1
      sections and therefore only those are annotated.
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Dmitry Vyukov <dvyukov@google.com>
      Cc: Josh Poimboeuf <jpoimboe@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NIngo Molnar <mingo@kernel.org>
      [stable backport: only take the lib/Makefile change to resolve gcc-10
       build issues]
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      600addbf
  2. 01 6月, 2020 19 次提交