1. 09 Sep, 2018 31 commits
  2. 05 Sep, 2018 9 commits
    • Greg Kroah-Hartman's avatar
      Linux 4.9.125 · 9eabacaf
      Greg Kroah-Hartman authored
      9eabacaf
    • Daniel Rosenberg's avatar
      staging: android: ion: check for kref overflow · 3af20bdd
      Daniel Rosenberg authored
      This patch is against 4.9. It does not apply to master due to a large
      rework of ion in 4.12 which removed the affected functions altogther.
      4c23cbff ("staging: android: ion: Remove import interface")
      
      Userspace can cause the kref to handles to increment
      arbitrarily high. Ensure it does not overflow.
      Signed-off-by: default avatarDaniel Rosenberg <drosen@google.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3af20bdd
    • Scott Bauer's avatar
      cdrom: Fix info leak/OOB read in cdrom_ioctl_drive_status · b8c0e154
      Scott Bauer authored
      commit 8f3fafc9 upstream.
      
      Like d88b6d04: "cdrom: information leak in cdrom_ioctl_media_changed()"
      
      There is another cast from unsigned long to int which causes
      a bounds check to fail with specially crafted input. The value is
      then used as an index in the slot array in cdrom_slot_status().
      Signed-off-by: default avatarScott Bauer <scott.bauer@intel.com>
      Signed-off-by: default avatarScott Bauer <sbauer@plzdonthack.me>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b8c0e154
    • H. Nikolaus Schaller's avatar
      power: generic-adc-battery: check for duplicate properties copied from iio channels · c1ebdbe4
      H. Nikolaus Schaller authored
      commit a427503e upstream.
      
      If an iio channel defines a basic property, there are duplicate entries
      in /sys/class/power/*/uevent.
      
      So add a check to avoid duplicates. Since all channels may be duplicates,
      we have to modify the related error check.
      Signed-off-by: default avatarH. Nikolaus Schaller <hns@goldelico.com>
      Cc: stable@vger.kernel.org
      Fixes: e60fea79 ("power: battery: Generic battery driver using IIO")
      Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.co.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c1ebdbe4
    • H. Nikolaus Schaller's avatar
      power: generic-adc-battery: fix out-of-bounds write when copying channel properties · a3702bba
      H. Nikolaus Schaller authored
      commit 932d4744 upstream.
      
      We did have sporadic problems in the pinctrl framework during boot
      where a pin group name unexpectedly became NULL leading to a NULL
      dereference in strcmp.
      
      Detailled analysis of the failing cases did reveal that there were
      two devm allocated objects close to each other. The second one was
      the affected group_desc in pinmux and the first one was the
      psy_desc->properties buffer of the gab driver.
      
      Review of the gab code showed that the address calculation for
      one memcpy() is wrong. It does
      
      	properties + sizeof(type) * index
      
      but C is defined to do the index multiplication already for
      pointer + integer additions. Hence the factor was applied twice
      and the memcpy() does write outside of the properties buffer.
      Sometimes it happened to be the pinctrl and triggered the strcmp(NULL).
      
      Anyways, it is overkill to use a memcpy() here instead of a simple
      assignment, which is easier to read and has less risk for wrong
      address calculations. So we change code to a simple assignment.
      
      If we initialize the index to the first free location, we can even
      remove the local variable 'properties'.
      
      This bug seems to exist right from the beginning in 3.7-rc1 in
      
      commit e60fea79 ("power: battery: Generic battery driver using IIO")
      Signed-off-by: default avatarH. Nikolaus Schaller <hns@goldelico.com>
      Cc: stable@vger.kernel.org
      Fixes: e60fea79 ("power: battery: Generic battery driver using IIO")
      Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.co.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a3702bba
    • Dan Carpenter's avatar
      PM / clk: signedness bug in of_pm_clk_add_clks() · d8467a6b
      Dan Carpenter authored
      commit 5e2e2f9f upstream.
      
      "count" needs to be signed for the error handling to work.  I made "i"
      signed as well so they match.
      
      Fixes: 02113ba9 (PM / clk: Add support for obtaining clocks from device-tree)
      Cc: 4.6+ <stable@vger.kernel.org> # 4.6+
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d8467a6b
    • Alberto Panizzo's avatar
      clk: rockchip: fix clk_i2sout parent selection bits on rk3399 · 072555e6
      Alberto Panizzo authored
      commit a64ad008 upstream.
      
      Register, shift and mask were wrong according to datasheet.
      
      Fixes: 11551005 ("clk: rockchip: add clock controller for the RK3399")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarAlberto Panizzo <alberto@amarulasolutions.com>
      Signed-off-by: default avatarAnthony Brandon <anthony@amarulasolutions.com>
      Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      072555e6
    • Mike Christie's avatar
      iscsi target: fix session creation failure handling · 00ee0e07
      Mike Christie authored
      commit 26abc916 upstream.
      
      The problem is that iscsi_login_zero_tsih_s1 sets conn->sess early in
      iscsi_login_set_conn_values. If the function fails later like when we
      alloc the idr it does kfree(sess) and leaves the conn->sess pointer set.
      iscsi_login_zero_tsih_s1 then returns -Exyz and we then call
      iscsi_target_login_sess_out and access the freed memory.
      
      This patch has iscsi_login_zero_tsih_s1 either completely setup the
      session or completely tear it down, so later in
      iscsi_target_login_sess_out we can just check for it being set to the
      connection.
      
      Cc: stable@vger.kernel.org
      Fixes: 0957627a ("iscsi-target: Fix sess allocation leak in...")
      Signed-off-by: default avatarMike Christie <mchristi@redhat.com>
      Acked-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: default avatarMatthew Wilcox <willy@infradead.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      00ee0e07
    • Bart Van Assche's avatar
      scsi: core: Avoid that SCSI device removal through sysfs triggers a deadlock · 6d70dea5
      Bart Van Assche authored
      commit 0ee223b2 upstream.
      
      A long time ago the unfortunate decision was taken to add a self-deletion
      attribute to the sysfs SCSI device directory. That decision was unfortunate
      because self-deletion is really tricky. We can't drop that attribute
      because widely used user space software depends on it, namely the
      rescan-scsi-bus.sh script. Hence this patch that avoids that writing into
      that attribute triggers a deadlock. See also commit 7973cbd9 ("[PATCH]
      add sysfs attributes to scan and delete scsi_devices").
      
      This patch avoids that self-removal triggers the following deadlock:
      
      ======================================================
      WARNING: possible circular locking dependency detected
      4.18.0-rc2-dbg+ #5 Not tainted
      ------------------------------------------------------
      modprobe/6539 is trying to acquire lock:
      000000008323c4cd (kn->count#202){++++}, at: kernfs_remove_by_name_ns+0x45/0x90
      
      but task is already holding lock:
      00000000a6ec2c69 (&shost->scan_mutex){+.+.}, at: scsi_remove_host+0x21/0x150 [scsi_mod]
      
      which lock already depends on the new lock.
      
      the existing dependency chain (in reverse order) is:
      
      -> #1 (&shost->scan_mutex){+.+.}:
             __mutex_lock+0xfe/0xc70
             mutex_lock_nested+0x1b/0x20
             scsi_remove_device+0x26/0x40 [scsi_mod]
             sdev_store_delete+0x27/0x30 [scsi_mod]
             dev_attr_store+0x3e/0x50
             sysfs_kf_write+0x87/0xa0
             kernfs_fop_write+0x190/0x230
             __vfs_write+0xd2/0x3b0
             vfs_write+0x101/0x270
             ksys_write+0xab/0x120
             __x64_sys_write+0x43/0x50
             do_syscall_64+0x77/0x230
             entry_SYSCALL_64_after_hwframe+0x49/0xbe
      
      -> #0 (kn->count#202){++++}:
             lock_acquire+0xd2/0x260
             __kernfs_remove+0x424/0x4a0
             kernfs_remove_by_name_ns+0x45/0x90
             remove_files.isra.1+0x3a/0x90
             sysfs_remove_group+0x5c/0xc0
             sysfs_remove_groups+0x39/0x60
             device_remove_attrs+0x82/0xb0
             device_del+0x251/0x580
             __scsi_remove_device+0x19f/0x1d0 [scsi_mod]
             scsi_forget_host+0x37/0xb0 [scsi_mod]
             scsi_remove_host+0x9b/0x150 [scsi_mod]
             sdebug_driver_remove+0x4b/0x150 [scsi_debug]
             device_release_driver_internal+0x241/0x360
             device_release_driver+0x12/0x20
             bus_remove_device+0x1bc/0x290
             device_del+0x259/0x580
             device_unregister+0x1a/0x70
             sdebug_remove_adapter+0x8b/0xf0 [scsi_debug]
             scsi_debug_exit+0x76/0xe8 [scsi_debug]
             __x64_sys_delete_module+0x1c1/0x280
             do_syscall_64+0x77/0x230
             entry_SYSCALL_64_after_hwframe+0x49/0xbe
      
      other info that might help us debug this:
      
       Possible unsafe locking scenario:
      
             CPU0                    CPU1
             ----                    ----
        lock(&shost->scan_mutex);
                                     lock(kn->count#202);
                                     lock(&shost->scan_mutex);
        lock(kn->count#202);
      
       *** DEADLOCK ***
      
      2 locks held by modprobe/6539:
       #0: 00000000efaf9298 (&dev->mutex){....}, at: device_release_driver_internal+0x68/0x360
       #1: 00000000a6ec2c69 (&shost->scan_mutex){+.+.}, at: scsi_remove_host+0x21/0x150 [scsi_mod]
      
      stack backtrace:
      CPU: 10 PID: 6539 Comm: modprobe Not tainted 4.18.0-rc2-dbg+ #5
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.0.0-prebuilt.qemu-project.org 04/01/2014
      Call Trace:
       dump_stack+0xa4/0xf5
       print_circular_bug.isra.34+0x213/0x221
       __lock_acquire+0x1a7e/0x1b50
       lock_acquire+0xd2/0x260
       __kernfs_remove+0x424/0x4a0
       kernfs_remove_by_name_ns+0x45/0x90
       remove_files.isra.1+0x3a/0x90
       sysfs_remove_group+0x5c/0xc0
       sysfs_remove_groups+0x39/0x60
       device_remove_attrs+0x82/0xb0
       device_del+0x251/0x580
       __scsi_remove_device+0x19f/0x1d0 [scsi_mod]
       scsi_forget_host+0x37/0xb0 [scsi_mod]
       scsi_remove_host+0x9b/0x150 [scsi_mod]
       sdebug_driver_remove+0x4b/0x150 [scsi_debug]
       device_release_driver_internal+0x241/0x360
       device_release_driver+0x12/0x20
       bus_remove_device+0x1bc/0x290
       device_del+0x259/0x580
       device_unregister+0x1a/0x70
       sdebug_remove_adapter+0x8b/0xf0 [scsi_debug]
       scsi_debug_exit+0x76/0xe8 [scsi_debug]
       __x64_sys_delete_module+0x1c1/0x280
       do_syscall_64+0x77/0x230
       entry_SYSCALL_64_after_hwframe+0x49/0xbe
      
      See also https://www.mail-archive.com/linux-scsi@vger.kernel.org/msg54525.html.
      
      Fixes: ac0ece91 ("scsi: use device_remove_file_self() instead of device_schedule_callback()")
      Signed-off-by: default avatarBart Van Assche <bart.vanassche@wdc.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Cc: Johannes Thumshirn <jthumshirn@suse.de>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      6d70dea5