1. 05 2月, 2015 1 次提交
  2. 14 12月, 2014 1 次提交
  3. 11 12月, 2014 6 次提交
  4. 10 12月, 2014 2 次提交
  5. 04 12月, 2014 2 次提交
  6. 30 11月, 2014 5 次提交
  7. 27 11月, 2014 3 次提交
    • M
      firmware class: Deletion of an unnecessary check before the function call "vunmap" · daa3d67f
      Markus Elfring 提交于
      The vunmap() function performes also input parameter validation. Thus the test
      around the call is not needed.
      
      This issue was detected by using the Coccinelle software.
      Signed-off-by: NMarkus Elfring <elfring@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      daa3d67f
    • K
      firmware loader: fix hung task warning dump · 000deba7
      Kweh, Hock Leong 提交于
      When using request_firmware_nowait() with FW_ACTION_NOHOTPLUG param to
      expose user helper interface, if the user do not react immediately, after
      120 seconds there will be a hung task warning message dumped as below:
      
      [ 3000.784235] INFO: task kworker/0:0:8259 blocked for more than 120 seconds.
      [ 3000.791281]       Tainted: G            E 3.16.0-rc1-yocto-standard #41
      [ 3000.798082] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      [ 3000.806072] kworker/0:0     D cd0075c8     0  8259      2 0x00000000
      [ 3000.812765] Workqueue: events request_firmware_work_func
      [ 3000.818253]  cd375e18 00000046 0000000e cd0075c8 000000f0 cd40ea00 cd375fec 1b883e89
      [ 3000.826374]  0000026b cd40ea00 80000000 00000001 cd0075c8 00000000 cd375de4 c119917f
      [ 3000.834492]  cd563360 cd375df4 c119a0ab cd563360 00000000 cd375e24 c119a1d6 00000000
      [ 3000.842616] Call Trace:
      [ 3000.845252]  [<c119917f>] ? kernfs_next_descendant_post+0x3f/0x50
      [ 3000.851543]  [<c119a0ab>] ? kernfs_activate+0x6b/0xc0
      [ 3000.856790]  [<c119a1d6>] ? kernfs_add_one+0xd6/0x130
      [ 3000.862047]  [<c15fdb02>] schedule+0x22/0x60
      [ 3000.866548]  [<c15fd195>] schedule_timeout+0x175/0x1d0
      [ 3000.871887]  [<c119b391>] ? __kernfs_create_file+0x71/0xa0
      [ 3000.877574]  [<c119bb9a>] ? sysfs_add_file_mode_ns+0xaa/0x180
      [ 3000.883533]  [<c15fe84f>] wait_for_completion+0x6f/0xb0
      [ 3000.888961]  [<c1065200>] ? wake_up_process+0x40/0x40
      [ 3000.894219]  [<c13cb600>] _request_firmware+0x750/0x9f0
      [ 3000.899666]  [<c1382a7f>] ? n_tty_receive_buf2+0x1f/0x30
      [ 3000.905200]  [<c13cba02>] request_firmware_work_func+0x22/0x50
      [ 3000.911235]  [<c10550d2>] process_one_work+0x122/0x380
      [ 3000.916571]  [<c1055859>] worker_thread+0xf9/0x470
      [ 3000.921555]  [<c1055760>] ? create_and_start_worker+0x50/0x50
      [ 3000.927497]  [<c1055760>] ? create_and_start_worker+0x50/0x50
      [ 3000.933448]  [<c105a5ff>] kthread+0x9f/0xc0
      [ 3000.937850]  [<c15ffd40>] ret_from_kernel_thread+0x20/0x30
      [ 3000.943548]  [<c105a560>] ? kthread_worker_fn+0x100/0x100
      
      This patch change the wait_for_completion() function call to
      wait_for_completion_interruptible() function call for solving the issue.
      
      Cc: Matt Fleming <matt.fleming@intel.com>
      Signed-off-by: NKweh, Hock Leong <hock.leong.kweh@intel.com>
      Acked-by: NMing Lei <ming.lei@canonical.com>
      Acked-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      000deba7
    • J
      devcoredump: provide a one-way disable function · d4533329
      Johannes Berg 提交于
      Since device/firmware coredumps can contain private data, it can
      be desirable to turn them off unconditionally to be certain that
      no such data will be collected by the system.
      
      To achieve this, provide a "disabled" sysfs class attribute that
      can only be changed from 0 to 1 and not back. Upon disabling,
      discard existing coredumps and stop storing new ones.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Reviewed-by: NKees Cook <keescook@chromium.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d4533329
  8. 25 11月, 2014 2 次提交
  9. 21 11月, 2014 1 次提交
    • U
      PM / Domains: Power on the PM domain right after attach completes · 2ed12769
      Ulf Hansson 提交于
      Vast amount of platform drivers which enables runtime PM, don't invoke
      a pm_runtime_get_sync() while probing their devices.
      
      Instead, once they have turned on their PM resourses during ->probe()
      and are ready to handle I/O, these invokes pm_runtime_set_active() to
      synchronize its state towards the runtime PM core.
      
      From the runtime PM point of view this behavior is perfectly acceptable,
      but we encounter probe failures if their corresponding devices resides
      in the generic PM domain. The issues are observed for those devices,
      which requires its PM domain to stay powered during ->probe() since
      that's not being controlled.
      
      While using the generic OF-based PM domain look-up, a device's PM
      domain will be attached during the probe sequence. For this path, let's
      fix the probe failures, by simply power on the PM domain right after
      when it's been attached to the device.
      
      The generic PM domain stays powered until all of its devices becomes
      runtime PM enabled and runtime PM suspended.
      
      The old SOCs which makes use of the generic PM domain but don't use the
      generic OF-based PM domain look-up, will not be affected from this
      change.
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      2ed12769
  10. 19 11月, 2014 1 次提交
  11. 14 11月, 2014 2 次提交
  12. 12 11月, 2014 1 次提交
    • U
      PM / Domains: Fix initial default state of the need_restore flag · 67732cd3
      Ulf Hansson 提交于
      The initial state of the device's need_restore flag should'nt depend on
      the current state of the PM domain. For example it should be perfectly
      valid to attach an inactive device to a powered PM domain.
      
      The pm_genpd_dev_need_restore() API allow us to update the need_restore
      flag to somewhat cope with such scenarios. Typically that should have
      been done from drivers/buses ->probe() since it's those that put the
      requirements on the value of the need_restore flag.
      
      Until recently, the Exynos SOCs were the only user of the
      pm_genpd_dev_need_restore() API, though invoking it from a centralized
      location while adding devices to their PM domains.
      
      Due to that Exynos now have swithed to the generic OF-based PM domain
      look-up, it's no longer possible to invoke the API from a centralized
      location. The reason is because devices are now added to their PM
      domains during the probe sequence.
      
      Commit "ARM: exynos: Move to generic PM domain DT bindings"
      did the switch for Exynos to the generic OF-based PM domain look-up,
      but it also removed the call to pm_genpd_dev_need_restore(). This
      caused a regression for some of the Exynos drivers.
      
      To handle things more properly in the generic PM domain, let's change
      the default initial value of the need_restore flag to reflect that the
      state is unknown. As soon as some of the runtime PM callbacks gets
      invoked, update the initial value accordingly.
      
      Moreover, since the generic PM domain is verifying that all devices
      are both runtime PM enabled and suspended, using pm_runtime_suspended()
      while pm_genpd_poweroff() is invoked from the scheduled work, we can be
      sure of that the PM domain won't be powering off while having active
      devices.
      
      Do note that, the generic PM domain can still only know about active
      devices which has been activated through invoking its runtime PM resume
      callback. In other words, buses/drivers using pm_runtime_set_active()
      during ->probe() will still suffer from a race condition, potentially
      probing a device without having its PM domain being powered. That issue
      will have to be solved using a different approach.
      
      This a log from the boot regression for Exynos5, which is being fixed in
      this patch.
      
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 308 at ../drivers/clk/clk.c:851 clk_disable+0x24/0x30()
      Modules linked in:
      CPU: 0 PID: 308 Comm: kworker/0:1 Not tainted 3.18.0-rc3-00569-gbd9449f-dirty #10
      Workqueue: pm pm_runtime_work
      [<c0013c64>] (unwind_backtrace) from [<c0010dec>] (show_stack+0x10/0x14)
      [<c0010dec>] (show_stack) from [<c03ee4cc>] (dump_stack+0x70/0xbc)
      [<c03ee4cc>] (dump_stack) from [<c0020d34>] (warn_slowpath_common+0x64/0x88)
      [<c0020d34>] (warn_slowpath_common) from [<c0020d74>] (warn_slowpath_null+0x1c/0x24)
      [<c0020d74>] (warn_slowpath_null) from [<c03107b0>] (clk_disable+0x24/0x30)
      [<c03107b0>] (clk_disable) from [<c02cc834>] (gsc_runtime_suspend+0x128/0x160)
      [<c02cc834>] (gsc_runtime_suspend) from [<c0249024>] (pm_generic_runtime_suspend+0x2c/0x38)
      [<c0249024>] (pm_generic_runtime_suspend) from [<c024f44c>] (pm_genpd_default_save_state+0x2c/0x8c)
      [<c024f44c>] (pm_genpd_default_save_state) from [<c024ff2c>] (pm_genpd_poweroff+0x224/0x3ec)
      [<c024ff2c>] (pm_genpd_poweroff) from [<c02501b4>] (pm_genpd_runtime_suspend+0x9c/0xcc)
      [<c02501b4>] (pm_genpd_runtime_suspend) from [<c024a4f8>] (__rpm_callback+0x2c/0x60)
      [<c024a4f8>] (__rpm_callback) from [<c024a54c>] (rpm_callback+0x20/0x74)
      [<c024a54c>] (rpm_callback) from [<c024a930>] (rpm_suspend+0xd4/0x43c)
      [<c024a930>] (rpm_suspend) from [<c024bbcc>] (pm_runtime_work+0x80/0x90)
      [<c024bbcc>] (pm_runtime_work) from [<c0032a9c>] (process_one_work+0x12c/0x314)
      [<c0032a9c>] (process_one_work) from [<c0032cf4>] (worker_thread+0x3c/0x4b0)
      [<c0032cf4>] (worker_thread) from [<c003747c>] (kthread+0xcc/0xe8)
      [<c003747c>] (kthread) from [<c000e738>] (ret_from_fork+0x14/0x3c)
      ---[ end trace 40cd58bcd6988f12 ]---
      
      Fixes: a4a8c2c4 (ARM: exynos: Move to generic PM domain DT bindings)
      Reported-and-tested0by: Sylwester Nawrocki <s.nawrocki@samsung.com>
      Reviewed-by: NSylwester Nawrocki <s.nawrocki@samsung.com>
      Reviewed-by: NKevin Hilman <khilman@linaro.org>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      67732cd3
  13. 11 11月, 2014 1 次提交
  14. 08 11月, 2014 12 次提交
    • U
      PM / Domains: Change prototype for the attach and detach callbacks · c16561e8
      Ulf Hansson 提交于
      Convert the prototypes to return an int in order to support error
      handling in these callbacks.
      
      Also, as suggested by Dmitry Torokhov, pass the domain pointer for use
      inside the callbacks, and so that they match the existing
      power_on/power_off callbacks which currently take the domain pointer.
      Acked-by: NDmitry Torokhov <dmitry.torokhov@gmail.com>
      Acked-by: NGeert Uytterhoeven <geert+renesas@glider.be>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      [ khilman: added domain as parameter to callbacks, as suggested by Dmitry ]
      Signed-off-by: NKevin Hilman <khilman@linaro.org>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      c16561e8
    • S
      drivers: base: support cpu cache information interface to userspace via sysfs · 246246cb
      Sudeep Holla 提交于
      This patch adds initial support for providing processor cache information
      to userspace through sysfs interface. This is based on already existing
      implementations(x86, ia64, s390 and powerpc) and hence the interface is
      intended to be fully compatible.
      
      The main purpose of this generic support is to avoid further code
      duplication to support new architectures and also to unify all the existing
      different implementations.
      
      This implementation maintains the hierarchy of cache objects which reflects
      the system's cache topology. Cache devices are instantiated as needed as
      CPUs come online. The cache information is replicated per-cpu even if they are
      shared. A per-cpu array of cache information maintained is used mainly for
      sysfs-related book keeping.
      
      It also implements the shared_cpu_map attribute, which is essential for
      enabling both kernel and user-space to discover the system's overall cache
      topology.
      
      This patch also add the missing ABI documentation for the cacheinfo sysfs
      interface already, which is well defined and widely used.
      Signed-off-by: NSudeep Holla <sudeep.holla@arm.com>
      Reviewed-by: NStephen Boyd <sboyd@codeaurora.org>
      Tested-by: NStephen Boyd <sboyd@codeaurora.org>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: linux-api@vger.kernel.org
      Cc: linux390@de.ibm.com
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linux-ia64@vger.kernel.org
      Cc: linuxppc-dev@lists.ozlabs.org
      Cc: linux-s390@vger.kernel.org
      Cc: x86@kernel.org
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      246246cb
    • S
      drivers: base: add cpu_device_create to support per-cpu devices · 3d52943b
      Sudeep Holla 提交于
      This patch adds a new function to create per-cpu devices.
      This helps in:
      1. reusing the device infrastructure to create any cpu related
         attributes and corresponding sysfs instead of creating and
         dealing with raw kobjects directly
      2. retaining the legacy path(/sys/devices/system/cpu/..) to support
         existing sysfs ABI
      3. avoiding to create links in the bus directory pointing to the
         device as there would be per-cpu instance of these devices with
         the same name since dev->bus is not populated to cpu_sysbus on
         purpose
      Signed-off-by: NSudeep Holla <sudeep.holla@arm.com>
      Tested-by: NStephen Boyd <sboyd@codeaurora.org>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: David Herrmann <dh.herrmann@gmail.com>
      Cc: Kay Sievers <kay@vrfy.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3d52943b
    • S
      topology: replace custom attribute macros with standard DEVICE_ATTR* · d6ea8d01
      Sudeep Holla 提交于
      Currently couple of custom macros are defined to declare the
      device attributes. However there are already standard macros
      defined in device.h that suffice the need and these custom
      macros can be removed.
      
      This patch replaces custom attribute macros with standard
      DEVICE_ATTR_RO attribute
      Signed-off-by: NSudeep Holla <sudeep.holla@arm.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d6ea8d01
    • S
      cpumask: factor out show_cpumap into separate helper function · 5aaba363
      Sudeep Holla 提交于
      Many sysfs *_show function use cpu{list,mask}_scnprintf to copy cpumap
      to the buffer aligned to PAGE_SIZE, append '\n' and '\0' to return null
      terminated buffer with newline.
      
      This patch creates a new helper function cpumap_print_to_pagebuf in
      cpumask.h using newly added bitmap_print_to_pagebuf and consolidates
      most of those sysfs functions using the new helper function.
      Signed-off-by: NSudeep Holla <sudeep.holla@arm.com>
      Suggested-by: NStephen Boyd <sboyd@codeaurora.org>
      Tested-by: NStephen Boyd <sboyd@codeaurora.org>
      Acked-by: N"Rafael J. Wysocki" <rjw@rjwysocki.net>
      Acked-by: NBjorn Helgaas <bhelgaas@google.com>
      Acked-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: x86@kernel.org
      Cc: linux-acpi@vger.kernel.org
      Cc: linux-pci@vger.kernel.org
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5aaba363
    • G
      Revert "driver core: Fix unbalanced device reference in drivers_probe" · f4c9485f
      Greg Kroah-Hartman 提交于
      This reverts commit bb34cb6b.
      
      Wrong patch for the wrong branch, sorry for the noise...
      
      Cc: Alex Williamson <alex.williamson@redhat.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f4c9485f
    • A
      driver core: Fix unbalanced device reference in drivers_probe · bb34cb6b
      Alex Williamson 提交于
      bus_find_device_by_name() acquires a device reference which is never
      released.  This results in an object leak, which on older kernels
      results in failure to release all resources of PCI devices.  libvirt
      uses drivers_probe to re-attach devices to the host after assignment
      and is therefore a common trigger for this leak.
      
      Example:
      
      # cd /sys/bus/pci/
      # dmesg -C
      # echo 1 > devices/0000\:01\:00.0/sriov_numvfs
      # echo 0 > devices/0000\:01\:00.0/sriov_numvfs
      # dmesg | grep 01:10
       pci 0000:01:10.0: [8086:10ca] type 00 class 0x020000
       kobject: '0000:01:10.0' (ffff8801d79cd0a8): kobject_add_internal: parent: '0000:00:01.0', set: 'devices'
       kobject: '0000:01:10.0' (ffff8801d79cd0a8): kobject_uevent_env
       kobject: '0000:01:10.0' (ffff8801d79cd0a8): fill_kobj_path: path = '/devices/pci0000:00/0000:00:01.0/0000:01:10.0'
       kobject: '0000:01:10.0' (ffff8801d79cd0a8): kobject_uevent_env
       kobject: '0000:01:10.0' (ffff8801d79cd0a8): fill_kobj_path: path = '/devices/pci0000:00/0000:00:01.0/0000:01:10.0'
       kobject: '0000:01:10.0' (ffff8801d79cd0a8): kobject_uevent_env
       kobject: '0000:01:10.0' (ffff8801d79cd0a8): fill_kobj_path: path = '/devices/pci0000:00/0000:00:01.0/0000:01:10.0'
       kobject: '0000:01:10.0' (ffff8801d79cd0a8): kobject_cleanup, parent           (null)
       kobject: '0000:01:10.0' (ffff8801d79cd0a8): calling ktype release
       kobject: '0000:01:10.0': free name
      
      [kobject freed as expected]
      
      # dmesg -C
      # echo 1 > devices/0000\:01\:00.0/sriov_numvfs
      # echo 0000:01:10.0 > drivers_probe
      # echo 0 > devices/0000\:01\:00.0/sriov_numvfs
      # dmesg | grep 01:10
       pci 0000:01:10.0: [8086:10ca] type 00 class 0x020000
       kobject: '0000:01:10.0' (ffff8801d79ce0a8): kobject_add_internal: parent: '0000:00:01.0', set: 'devices'
       kobject: '0000:01:10.0' (ffff8801d79ce0a8): kobject_uevent_env
       kobject: '0000:01:10.0' (ffff8801d79ce0a8): fill_kobj_path: path = '/devices/pci0000:00/0000:00:01.0/0000:01:10.0'
       kobject: '0000:01:10.0' (ffff8801d79ce0a8): kobject_uevent_env
       kobject: '0000:01:10.0' (ffff8801d79ce0a8): fill_kobj_path: path = '/devices/pci0000:00/0000:00:01.0/0000:01:10.0'
       kobject: '0000:01:10.0' (ffff8801d79ce0a8): kobject_uevent_env
       kobject: '0000:01:10.0' (ffff8801d79ce0a8): fill_kobj_path: path = '/devices/pci0000:00/0000:00:01.0/0000:01:10.0'
      
      [no free]
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      bb34cb6b
    • A
      driver core: Fix unbalanced device reference in drivers_probe · 0372ffb3
      Alex Williamson 提交于
      bus_find_device_by_name() acquires a device reference which is never
      released.  This results in an object leak, which on older kernels
      results in failure to release all resources of PCI devices.  libvirt
      uses drivers_probe to re-attach devices to the host after assignment
      and is therefore a common trigger for this leak.
      
      Example:
      
      # cd /sys/bus/pci/
      # dmesg -C
      # echo 1 > devices/0000\:01\:00.0/sriov_numvfs
      # echo 0 > devices/0000\:01\:00.0/sriov_numvfs
      # dmesg | grep 01:10
       pci 0000:01:10.0: [8086:10ca] type 00 class 0x020000
       kobject: '0000:01:10.0' (ffff8801d79cd0a8): kobject_add_internal: parent: '0000:00:01.0', set: 'devices'
       kobject: '0000:01:10.0' (ffff8801d79cd0a8): kobject_uevent_env
       kobject: '0000:01:10.0' (ffff8801d79cd0a8): fill_kobj_path: path = '/devices/pci0000:00/0000:00:01.0/0000:01:10.0'
       kobject: '0000:01:10.0' (ffff8801d79cd0a8): kobject_uevent_env
       kobject: '0000:01:10.0' (ffff8801d79cd0a8): fill_kobj_path: path = '/devices/pci0000:00/0000:00:01.0/0000:01:10.0'
       kobject: '0000:01:10.0' (ffff8801d79cd0a8): kobject_uevent_env
       kobject: '0000:01:10.0' (ffff8801d79cd0a8): fill_kobj_path: path = '/devices/pci0000:00/0000:00:01.0/0000:01:10.0'
       kobject: '0000:01:10.0' (ffff8801d79cd0a8): kobject_cleanup, parent           (null)
       kobject: '0000:01:10.0' (ffff8801d79cd0a8): calling ktype release
       kobject: '0000:01:10.0': free name
      
      [kobject freed as expected]
      
      # dmesg -C
      # echo 1 > devices/0000\:01\:00.0/sriov_numvfs
      # echo 0000:01:10.0 > drivers_probe
      # echo 0 > devices/0000\:01\:00.0/sriov_numvfs
      # dmesg | grep 01:10
       pci 0000:01:10.0: [8086:10ca] type 00 class 0x020000
       kobject: '0000:01:10.0' (ffff8801d79ce0a8): kobject_add_internal: parent: '0000:00:01.0', set: 'devices'
       kobject: '0000:01:10.0' (ffff8801d79ce0a8): kobject_uevent_env
       kobject: '0000:01:10.0' (ffff8801d79ce0a8): fill_kobj_path: path = '/devices/pci0000:00/0000:00:01.0/0000:01:10.0'
       kobject: '0000:01:10.0' (ffff8801d79ce0a8): kobject_uevent_env
       kobject: '0000:01:10.0' (ffff8801d79ce0a8): fill_kobj_path: path = '/devices/pci0000:00/0000:00:01.0/0000:01:10.0'
       kobject: '0000:01:10.0' (ffff8801d79ce0a8): kobject_uevent_env
       kobject: '0000:01:10.0' (ffff8801d79ce0a8): fill_kobj_path: path = '/devices/pci0000:00/0000:00:01.0/0000:01:10.0'
      
      [no free]
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0372ffb3
    • S
      driver core: fix race with userland in device_add() · 0cd75047
      Sergey Klyaus 提交于
      bus_add_device() should be called before devtmpfs_create_node(), so when
      userland application opens device from devtmpfs, it wouldn't get ENODEV
      from kernel, because device_add() wasn't completed.
      Signed-off-by: NSergey Klyaus <Sergey.Klyaus@Tune-IT.Ru>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0cd75047
    • J
      tiny: rename ENABLE_DEV_COREDUMP to ALLOW_DEV_COREDUMP · cd3d9ea1
      Johannes Berg 提交于
      The ENABLE_DEV_COREDUMP option is misleading as it implies that
      it gets the framework enabled, this isn't true it just allows it
      to get enabled if a driver needs it.
      
      Rename it to ALLOW_DEV_COREDUMP to better capture its semantics.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Reviewed-by: NJosh Triplett <josh@joshtriplett.org>
      Acked-by: NAristeu Rozanski <aris@redhat.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      cd3d9ea1
    • A
      tiny: reverse logic for DISABLE_DEV_COREDUMP · 9c602699
      Aristeu Rozanski 提交于
      It's desirable for allnconfig and tinyconfig targets to result in the
      least amount of code possible. DISABLE_DEV_COREDUMP exists as a way to
      switch off DEV_COREDUMP regardless if any drivers select
      WANT_DEV_COREDUMP.
      
      This patch renames the option to ENABLE_DEV_COREDUMP and setting it to
      'n' (as in allnconfig or tinyconfig) will effectively disable device
      coredump.
      
      Cc: Josh Triplett <josh@joshtriplett.org>
      Reviewed-by: NJosh Triplett <josh@joshtriplett.org>
      Signed-off-by: NAristeu Rozanski <arozansk@redhat.com>
      Reviewed-by: NJohannes Berg <johannes@sipsolutions.net>
      Acked-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9c602699
    • Y
      sysfs: driver core: Fix glue dir race condition by gdp_mutex · e4a60d13
      Yijing Wang 提交于
      There is a race condition when removing glue directory.
      It can be reproduced in following test:
      
      path 1: Add first child device
      device_add()
          get_device_parent()
                  /*find parent from glue_dirs.list*/
                  list_for_each_entry(k, &dev->class->p->glue_dirs.list, entry)
                          if (k->parent == parent_kobj) {
                                  kobj = kobject_get(k);
                                  break;
                          }
                  ....
                  class_dir_create_and_add()
      
      path2: Remove last child device under glue dir
      device_del()
          cleanup_device_parent()
                  cleanup_glue_dir()
                          kobject_put(glue_dir);
      
      If path2 has been called cleanup_glue_dir(), but not
      call kobject_put(glue_dir), the glue dir is still
      in parent's kset list. Meanwhile, path1 find the glue
      dir from the glue_dirs.list. Path2 may release glue dir
      before path1 call kobject_get(). So kernel will report
      the warning and bug_on.
      
      This is a "classic" problem we have of a kref in a list
      that can be found while the last instance could be removed
      at the same time.
      
      This patch reuse gdp_mutex to fix this race condition.
      
      The following calltrace is captured in kernel 3.4, but
      the latest kernel still has this bug.
      
      -----------------------------------------------------
      <4>[ 3965.441471] WARNING: at ...include/linux/kref.h:41 kobject_get+0x33/0x40()
      <4>[ 3965.441474] Hardware name: Romley
      <4>[ 3965.441475] Modules linked in: isd_iop(O) isd_xda(O)...
      ...
      <4>[ 3965.441605] Call Trace:
      <4>[ 3965.441611]  [<ffffffff8103717a>] warn_slowpath_common+0x7a/0xb0
      <4>[ 3965.441615]  [<ffffffff810371c5>] warn_slowpath_null+0x15/0x20
      <4>[ 3965.441618]  [<ffffffff81215963>] kobject_get+0x33/0x40
      <4>[ 3965.441624]  [<ffffffff812d1e45>] get_device_parent.isra.11+0x135/0x1f0
      <4>[ 3965.441627]  [<ffffffff812d22d4>] device_add+0xd4/0x6d0
      <4>[ 3965.441631]  [<ffffffff812d0dbc>] ? dev_set_name+0x3c/0x40
      ....
      <2>[ 3965.441912] kernel BUG at ..../fs/sysfs/group.c:65!
      <4>[ 3965.441915] invalid opcode: 0000 [#1] SMP
      ...
      <4>[ 3965.686743]  [<ffffffff811a677e>] sysfs_create_group+0xe/0x10
      <4>[ 3965.686748]  [<ffffffff810cfb04>] blk_trace_init_sysfs+0x14/0x20
      <4>[ 3965.686753]  [<ffffffff811fcabb>] blk_register_queue+0x3b/0x120
      <4>[ 3965.686756]  [<ffffffff812030bc>] add_disk+0x1cc/0x490
      ....
      -------------------------------------------------------
      Signed-off-by: NYijing Wang <wangyijing@huawei.com>
      Signed-off-by: NWeng Meiling <wengmeiling.weng@huawei.com>
      Cc: <stable@vger.kernel.org> #3.4+
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e4a60d13