1. 01 May, 2017 17 commits
    • Linus Torvalds's avatar
      Merge tag 'devprop-4.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 5fab1004
      Linus Torvalds authored
      Pull generic device properties framework updates from Rafael Wysocki:
       "These add support for the ports and endpoints concepts, based on the
        existing DT support for them, to the generic device properties
        framework and update the ACPI _DSD properties code to recognize ports
        and endpoints accordingly.
      
        Specifics:
      
         - Extend the ACPI _DSD properties code and the generic device
           properties framework to support the concept of remote endponts
           (Mika Westerberg, Sakari Ailus).
      
         - Document the support for ports and endpoints in _DSD properties and
           extend the generic device properties framework to make it more
           suitable for the handling of ports and endpoints (Sakari Ailus)"
      
      * tag 'devprop-4.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        device property: Read strings using string array reading functions
        device property: fwnode_property_read_string_array() returns nr of strings
        device property: Fix reading pset strings using array access functions
        device property: fwnode_property_read_string_array() may return -EILSEQ
        ACPI / DSD: Document references, ports and endpoints
        device property: Add fwnode_get_next_parent()
        device property: Add support for fwnode endpoints
        device property: Make dev_fwnode() public
        of: Add of_fwnode_handle() to convert device nodes to fwnode_handle
        device property: Add fwnode_handle_get()
        device property: Add support for remote endpoints
        ACPI / property: Add support for remote endpoints
        device property: Add fwnode_get_named_child_node()
        ACPI / property: Add fwnode_get_next_child_node()
        device property: Add fwnode_get_parent()
        ACPI / property: Add possiblity to retrieve parent firmware node
      5fab1004
    • Linus Torvalds's avatar
      Merge tag 'acpi-4.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 08be8810
      Linus Torvalds authored
      Pull ACPI updates from Rafael Wysocki:
       "These are some device enumeration code changes, updates of the AC and
        battery drivers to help them avoid attaching to devices that cannot be
        handled by them, new operation region driver for the Intel CHT Whiskey
        Cove PMIC, new sysfs entries for CPPC performance capabilities, a new
        _REV quirk blacklist entry and a couple of assorted minor fixes and
        cleanups.
      
        Specifics:
      
         - Update the core device enumeration code to make it more internally
           consistent and robust and drop the force_remove sysfs attribute
           that could be used to tell it to ignore errors on device
           hot-removal which was dangerous in general and no real and still
           relevant use cases for it could be found (Rafael Wysocki, Michal
           Hocko).
      
         - Make the core device enumeration code use _PXM to associate
           platform devices created by it with specific NUMA nodes (Shanker
           Donthineni).
      
         - Extend the CPPC library by adding more sysfs entries for
           performance capabilities to it and making it use the lowest
           nonlinear performance parameter (Prashanth Prakash).
      
         - Make the CPU online more consistent with CPU initialization in the
           ACPI processor driver (Prashanth Prakash).
      
         - Update the AC and battery drivers to help them avoid attaching to
           devices that cannot be handled by them and update the
           axp288_charger power supply driver to work correctly on ACPI
           systems without the INT3496 device (Hans de Goede).
      
         - Add an ACPI operation region driver for the Intel CHT Whiskey Cove
           PMIC and update the xpower operation region driver to work without
           IIO which isn't really necessary for it to work (Hans de Goede).
      
         - Add a new entry for Dell Inspiron 7537 to the _REV quirk blacklist
           (Kai Heng Feng).
      
         - Make the code in the ACPI video driver easier to follow by adding
           symbols and comments to it (Dmitry Frank).
      
         - Update ACPI documentation and drop a function that has no users
           from the tables-handling code (Cao jin, Baoquan He)"
      
      * tag 'acpi-4.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPI / PMIC: Stop xpower OPRegion handler relying on IIO
        ACPI / PMIC: Add opregion driver for Intel CHT Whiskey Cove PMIC
        ACPI / scan: Avoid enumerating devices more than once
        ACPI / scan: Apply default enumeration to devices with ACPI drivers
        power: supply: axp288_charger: Only wait for INT3496 device if present
        ACPI / AC: Add a blacklist with PMIC ACPI HIDs with a native charger driver
        ACPI / battery: Add a blacklist with PMIC ACPI HIDs with a native battery driver
        ACPI / battery: Fix acpi_battery_exit on acpi_battery_init_async errors
        ACPI / utils: Add new acpi_dev_present helper
        ACPI / video: add comments about subtle cases
        ACPI / video: get rid of magic numbers and use enum instead
        ACPI / doc: linuxized-acpica.txt: fix typos
        ACPI / blacklist: add _REV quirk for Dell Inspiron 7537
        ACPI / tables: Drop acpi_parse_entries() which is not used
        ACPI / CPPC: add sysfs entries for CPPC perf capabilities
        ACPI / CPPC: Read lowest nonlinear perf in cppc_get_perf_caps()
        ACPI / platform: Update platform device NUMA node based on _PXM method
        ACPI / Processor: Drop setup_max_cpus check from acpi_processor_add()
        ACPI / scan: Drop support for force_remove
      08be8810
    • Linus Torvalds's avatar
      Merge tag 'pm-4.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 0e285e90
      Linus Torvalds authored
      Pull power management updates from Rafael Wysocki:
       "This time the majority of changes go to the cpufreq subsystem (and to
        the intel_pstate driver in particular) and there are some updates in
        the generic power domains framework, cpuidle, tools and a couple of
        other places.
      
        One thing worth mentioning is that the intel_pstate's sysfs interface
        has been reworked to be more consistent with the general expectations
        of the cpufreq core and less confusing, hopefully for the better.
        Also, we have a new cpufreq driver for Tegra186 and new hardware
        support in intel_pstata and the Mediatek cpufreq driver.
      
        Apart from that, the AnalyzeSuspend utility for system suspend
        profiling gets a companion called AnalyzeBoot for the analogous
        profiling of system boot and they both go into one place under
        tools/power/pm-graph/.
      
        The rest is mostly fixes, cleanups and code reorganization.
      
        Specifics:
      
         - Rework the intel_pstate driver's sysfs interface to make it more
           straightforward and more intuitive (Rafael Wysocki).
      
         - Make intel_pstate support all processors which advertise HWP
           (hardware-managed P-states) to the kernel in all operation modes
           and make it use the load-based P-state selection algorithm on a
           wider range of systems in the active mode (Rafael Wysocki).
      
         - Add cpufreq driver for Tegra186 (Mikko Perttunen).
      
         - Add support for Gemini Lake SoCs to intel_pstate (David Box).
      
         - Add support for MT8176 and MT817x to the Mediatek cpufreq driver
           and clean up that driver a bit (Daniel Kurtz).
      
         - Clean up intel_pstate and optimize it slightly (Rafael Wysocki).
      
         - Update the schedutil cpufreq governor, mostly to fix a couple of
           issues with it related to specific workloads, and rework its sysfs
           tunable and initialization a bit (Rafael Wysocki, Viresh Kumar).
      
         - Fix minor issues in the imx6q, dbx500 and qoriq cpufreq drivers
           (Christophe Jaillet, Irina Tirdea, Leonard Crestez, Viresh Kumar,
           YuanTian Tang).
      
         - Add file patterns for cpufreq DT bindings to MAINTAINERS (Geert
           Uytterhoeven).
      
         - Add support for "always on" power domains to the genpd (generic
           power domains) framework and clean up that code somewhat (Ulf
           Hansson, Lina Iyer, Viresh Kumar).
      
         - Fix minor issues in the powernv cpuidle driver and clean it up
           (Anton Blanchard, Gautham Shenoy).
      
         - Move the AnalyzeSuspend utility under tools/power/pm-graph/ and add
           an analogous boot-profiling utility called AnalyzeBoot to it (Todd
           Brandt).
      
         - Add rk3328 support to the rockchip-io AVS (Adaptive Voltage
           Scaling) driver (David Wu).
      
         - Fix minor issues in the cpuidle core, the intel_pstate_tracer
           utility, the devfreq framework and the PM core documentation
           (Chanwoo Choi, Doug Smythies, Johan Hovold, Marcin Nowakowski)"
      
      * tag 'pm-4.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (56 commits)
        PM / runtime: Document autosuspend-helper side effects
        PM / runtime: Fix autosuspend documentation
        tools: power: pm-graph: Package makefile and man pages
        tools: power: pm-graph: AnalyzeBoot v2.0
        tools: power: pm-graph: AnalyzeSuspend v4.6
        cpufreq: Add Tegra186 cpufreq driver
        cpufreq: imx6q: Fix error handling code
        cpufreq: imx6q: Set max suspend_freq to avoid changes during suspend
        cpufreq: imx6q: Fix handling EPROBE_DEFER from regulator
        cpuidle: powernv: Avoid a branch in the core snooze_loop() loop
        cpuidle: powernv: Don't continually set thread priority in snooze_loop()
        cpuidle: powernv: Don't bounce between low and very low thread priority
        cpuidle: cpuidle-cps: remove unused variable
        tools/power/x86/intel_pstate_tracer: Adjust directory ownership
        cpufreq: schedutil: Use policy-dependent transition delays
        cpufreq: schedutil: Reduce frequencies slower
        PM / devfreq: Move struct devfreq_governor to devfreq directory
        PM / Domains: Ignore domain-idle-states that are not compatible
        cpufreq: intel_pstate: Add support for Gemini Lake
        powernv-cpuidle: Validate DT property array size
        ...
      0e285e90
    • Linus Torvalds's avatar
      Merge branch 'for-4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup · 9410091d
      Linus Torvalds authored
      Pull cgroup updates from Tejun Heo:
       "Nothing major. Two notable fixes are Li's second stab at fixing the
        long-standing race condition in the mount path and suppression of
        spurious warning from cgroup_get(). All other changes are trivial"
      
      * 'for-4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
        cgroup: mark cgroup_get() with __maybe_unused
        cgroup: avoid attaching a cgroup root to two different superblocks, take 2
        cgroup: fix spurious warnings on cgroup_is_dead() from cgroup_sk_alloc()
        cgroup: move cgroup_subsys_state parent field for cache locality
        cpuset: Remove cpuset_update_active_cpus()'s parameter.
        cgroup: switch to BUG_ON()
        cgroup: drop duplicate header nsproxy.h
        kernel: convert css_set.refcount from atomic_t to refcount_t
        kernel: convert cgroup_namespace.count from atomic_t to refcount_t
      9410091d
    • Linus Torvalds's avatar
      Merge branch 'for-4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq · ad1490bc
      Linus Torvalds authored
      Pull workqueue update from Tejun Heo:
       "One trivial patch to use setup_deferrable_timer() instead of
        open-coding the initialization"
      
      * 'for-4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
        workqueue: use setup_deferrable_timer
      ad1490bc
    • Linus Torvalds's avatar
      Merge branch 'for-4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata · e69bbe75
      Linus Torvalds authored
      Pull libata updates from Tejun Heo:
       "The biggest core change is removal of SCT WRITE SAME support, which
        never worked properly.
      
        Other than that, trivial updates in core code and specific embedded
        driver updates"
      
      * 'for-4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
        libata: remove SCT WRITE SAME support
        libata: reject passthrough WRITE SAME requests
        dt-bindings: ata: add DT bindings for ahci-dm816 SATA controller
        ata: ahci: add support for DaVinci DM816 SATA controller
        pata: remove the at91 driver
        libata: make ata_sg_clean static over again
        libata: use setup_deferrable_timer
        ata: allow subsystem to be used on m32r and s390 archs
        Delete redundant return value check of platform_get_resource()
        ata: constify of_device_id structures
      e69bbe75
    • Linus Torvalds's avatar
      Merge tag 'leds_for_4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds · 85724ede
      Linus Torvalds authored
      Pull LED updates from Jacek Anaszewski:
       "New drivers:
      
         - add LED support for MT6323 PMIC
      
         - add LED support for Motorola CPCAP PMIC
      
        New features and improvements:
      
         - add LED trigger for all CPUs aggregated which is useful on tiny
           boards with more CPU cores than LED pins
      
         - add OF variants of LED registering functions as a preparation for
           adding generic support for Device Tree parsing
      
         - dell-led improvements and cleanups, followed by moving it to the
           x86 platform driver subsystem which is a more appropriate place for
           it
      
         - extend pca9532 Device Tree support by adding the LEDs
           'default-state' property
      
         - extend pca963x Device Tree support by adding nxp,inverted-out
           property for inverting the polarity of the output
      
         - remove ACPI support for lp3952 since it relied on a non-official
           ACPI IDs"
      
      * tag 'leds_for_4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds:
        leds: pca9532: Extend pca9532 device tree support
        leds: cpcap: new driver
        mfd: cpcap: Add missing include dependencies
        leds: lp3952: Use 'if (ret)' pattern
        leds: lp3952: Remove ACPI support for lp3952
        leds: mt6323: Fix an off by one bug in probe
        dt-bindings: leds: Add document bindings for leds-mt6323
        leds: Add LED support for MT6323 PMIC
        leds: gpio: use OF variant of LED registering function
        leds: core: add OF variants of LED registering functions
        platform/x86: dell-wmi-led: fix coding style issues
        dell-led: move driver to drivers/platform/x86/dell-wmi-led.c
        dell-led: remove code related to mic mute LED
        platform/x86: dell-laptop: import dell_micmute_led_set() from drivers/leds/dell-led.c
        ALSA: hda - rename dell_led_set_func to dell_micmute_led_set_func
        ALSA: hda - use dell_micmute_led_set() instead of dell_app_wmi_led_set()
        dell-led: remove GUID check from dell_micmute_led_set()
        leds/trigger/cpu: Add LED trigger for all CPUs aggregated
      85724ede
    • Linus Torvalds's avatar
      Merge branch 'mailbox-for-next' of git://git.linaro.org/landing-teams/working/fujitsu/integration · 477d7cae
      Linus Torvalds authored
      Pull mailbox updates from Jassi Brar:
      
       - new driver for Broadcom FlexRM controller
      
       - constify data structures of callback functions in some drivers
      
       - a few bug fixes uncovered by multi-threaded use of mailbox channels
         in blocking mode
      
      * 'mailbox-for-next' of git://git.linaro.org/landing-teams/working/fujitsu/integration:
        mailbox: handle empty message in tx_tick
        mailbox: skip complete wait event if timer expired
        mailbox: always wait in mbox_send_message for blocking Tx mode
        mailbox: Remove depends on COMPILE_TEST for BCM_FLEXRM_MBOX
        mailbox: check ->last_tx_done for NULL in case of timer-based polling
        dt-bindings: Add DT bindings info for FlexRM ring manager
        mailbox: Add driver for Broadcom FlexRM ring manager
        dt-bindings: mailbox: Update doc with NSP PDC/mailbox support
        mailbox: bcm-pdc: Add Northstar Plus support to PDC driver
        mailbox: constify mbox_chan_ops structures
      477d7cae
    • Linus Torvalds's avatar
      Merge tag 'for-linux-4.12' of git://github.com/cminyard/linux-ipmi · 6fb41cbd
      Linus Torvalds authored
      Pull IPMI updates from Corey Minyard:
       "A few fixes of things in the IPMI area, the watchdog would have issues
        at panic time cause by a recently introduced change, a problem with
        device numbering, one possible panic in the I2C driver (destined for
        stable).
      
        Nothing earth-shattering, but some things that need to go in"
      
      * tag 'for-linux-4.12' of git://github.com/cminyard/linux-ipmi:
        ipmi/watchdog: fix wdog hang on panic waiting for ipmi response
        ipmi_si: use smi_num for init_name
        ipmi: bt-bmc: Add ast2500 compatible string
        ACPI / IPMI: change warning to debug on timeout
        ACPI / IPMI: allow ACPI_IPMI with IPMI_SSIF
        ipmi_ssif: use setup_timer
        ipmi: Fix kernel panic at ipmi_ssif_thread()
      6fb41cbd
    • Linus Torvalds's avatar
      Merge tag 'hsi-for-4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi · 5c6ba7d5
      Linus Torvalds authored
      Pull HSI fix from Sebastian Reichel:
       "Fix double free fix in ssi-protocol"
      
      * tag 'hsi-for-4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi:
        HSI: ssi_protocol: double free in ssip_pn_xmit()
      5c6ba7d5
    • Linus Torvalds's avatar
      Merge tag 'for-v4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply · 7f2ebde7
      Linus Torvalds authored
      Pull power supply and reset updates from Sebastian Reichel:
       "New drivers:
         - gemini-poweroff
         - cpcap-charger (for Motorola Droid 4)
         - battery-lego-ev3 (for LEGO Mindstorms EV3)
      
        New chip/feature support:
         - bq24190-charger: add runtime PM support
         - bq24190-charger: add bq24192i support
         - register masking for syscon-poweroff
      
        ... and misc small fixes & cleanups
      
      * tag 'for-v4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply: (29 commits)
        power: supply: bq24190_charger: Use new extcon_register_notifier_all()
        power: supply: bq24190_charger: Longer delay while polling reset flag
        power: supply: bq24190_charger: Uniform pm_runtime_get() failure handling
        power: supply: bq24190_charger: Clean up extcon code
        power: supply: bq24190_charger: Limit over/under voltage fault logging
        power: supply: New driver for LEGO MINDSTORMS EV3 battery
        dt-bindings: power: supply: New bindings for LEGO MINDSTORMS EV3 battery
        power: supply: tps65217: remove debug messages for function calls
        power: supply: ltc2941-battery-gauge: Add OF device ID table
        power: supply: ltc2941-battery-gauge: Add vendor to compatibles in binding
        power: supply: charger-manager: simplify return statements
        power: supply: lp8788: prevent out of bounds array access
        power: supply: cpcap-charger: Add minimal CPCAP PMIC battery charger
        power: supply: bq24190_charger: Use extcon to determine ilimit, 5v boost
        power: supply: bq24190_charger: Add support for bq24192i
        power: supply: bq24190_charger: Use i2c-core irq-mapping code
        power: bq24190_charger: mark PM functions as __maybe_unused
        power: supply: sbs-charger: simplified bool function
        power: supply: ab8500: Replaced spaces with tabs in indent
        power: supply: bq25890: Use gpiod_get()
        ...
      7f2ebde7
    • Tejun Heo's avatar
      cgroup: mark cgroup_get() with __maybe_unused · 310b4816
      Tejun Heo authored
      a590b90d ("cgroup: fix spurious warnings on cgroup_is_dead() from
      cgroup_sk_alloc()") converted most cgroup_get() usages to
      cgroup_get_live() leaving cgroup_sk_alloc() the sole user of
      cgroup_get().  When !CONFIG_SOCK_CGROUP_DATA, this ends up triggering
      unused warning for cgroup_get().
      
      Silence the warning by adding __maybe_unused to cgroup_get().
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Link: http://lkml.kernel.org/r/20170501145340.17e8ef86@canb.auug.org.auSigned-off-by: default avatarTejun Heo <tj@kernel.org>
      310b4816
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-linus-v4.12' of... · cdbfbba9
      Linus Torvalds authored
      Merge tag 'hwmon-for-linus-v4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
      
      Pull hwmon updates from Guenter Roeck:
      
       - removed twl4030-madc driver
      
       - added ASPEED PWM/fan driver
      
       - various minor improvements and fixes in several drivers
      
      * tag 'hwmon-for-linus-v4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: (36 commits)
        hwmon: (twl4030-madc) drop driver
        hwmon: (tmp103) Use SIMPLE_DEV_PM_OPS helper macro
        hwmon: (adt7475) set start bit in probe
        hwmon: (ina209) Handled signed registers
        hwmon: (lm87) Add OF device ID table
        hwmon: (lm87) Remove unused I2C devices driver_data
        drivers: hwmon: Support for ASPEED PWM/Fan tach
        Documentation: dt-bindings: Document bindings for ASPEED AST2400/AST2500 PWM and Fan tach controller device driver
        hwmon: (lm87) Allow channel data to be set from dts file
        Documentation: dtb: lm87: Add hwmon binding documentation
        hwmon: (ads7828) Accept optional parameters from device tree
        hwmon: (dell-smm) Add Dell XPS 15 9560 into DMI list
        hwmon: Constify str parameter of hwmon_ops->read_string
        dt: Add vendor prefix for Sensirion
        hwmon: (tmp421) Add OF device ID table
        hwmon: (tmp103) Add OF device ID table
        hwmon: (tmp102) Add OF device ID table
        hwmon: (stts751) Add OF device ID table
        hwmon: (ucd9200) Add OF device ID table
        hwmon: (ucd9000) Add OF device ID table
        ...
      cdbfbba9
    • Linus Torvalds's avatar
      Merge tag 'edac_for_4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp · 89d1cf89
      Linus Torvalds authored
      Pull EDAC updates from Borislav Petkov:
      
       - an EDAC driver for Cavium ThunderX RAS IP (Sergey Temerkhanov)
      
       - removal of DRAM error reporting through PCI SERR NMI (Borislav
         Petkov)
      
       - misc small fixes (Jan Glauber, Thor Thayer)
      
      * tag 'edac_for_4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp:
        EDAC, ghes: Do not enable it by default
        EDAC: Rename report status accessors
        EDAC: Delete edac_stub.c
        EDAC: Update Kconfig help text
        EDAC: Remove EDAC_MM_EDAC
        EDAC: Issue tracepoint only when it is defined
        ACPI/extlog: Add EDAC dependency
        EDAC: Move edac_op_state to edac_mc.c
        EDAC: Remove edac_err_assert
        EDAC: Get rid of edac_handlers
        x86/nmi, EDAC: Get rid of DRAM error reporting thru PCI SERR NMI
        EDAC, highbank: Align Makefile directives
        EDAC, thunderx: Remove unused code
        EDAC, thunderx: Change LMC index calculation
        EDAC, altera: Fix peripheral warnings for Cyclone5
        EDAC, thunderx: Fix L2C MCI interrupt disable
        EDAC, thunderx: Add Cavium ThunderX EDAC driver
      89d1cf89
    • Linus Torvalds's avatar
      Merge branch 'for-4.12/post-merge' of git://git.kernel.dk/linux-block · 08c521a2
      Linus Torvalds authored
      Pull second round of block layer updates from Jens Axboe:
      
       - Further fixups to the NVMe APST code, from Andy.
      
       - Various fixes for (mostly) nvme-fc, from Christoph and James.
      
       - NVMe scsi fixes from Jon and Christoph.
      
      * 'for-4.12/post-merge' of git://git.kernel.dk/linux-block: (39 commits)
        nvme-scsi: remove nvme_trans_security_protocol
        nvme-lightnvm: add missing endianess conversion in nvme_nvm_end_io
        nvme-scsi: Consider LBA format in IO splitting calculation
        nvme-fc: avoid memory corruption caused by calling nvmf_free_options() twice
        lpfc: Fix memory corruption of the lpfc_ncmd->list pointers
        nvme: Add nvme_core.force_apst to ignore the NO_APST quirk
        nvme: Display raw APST configuration via DYNAMIC_DEBUG
        nvme: Fix APST comment
        lpfc revison 11.2.0.12
        Fix Express lane queue creation.
        Update ABORT processing for NVMET.
        Fix implicit logo and RSCN handling for NVMET
        Add Fabric assigned WWN support.
        Fix max_sgl_segments settings for NVME / NVMET
        Fix crash after issuing lip reset
        Fix driver load issues when MRQ=8
        Remove hba lock from NVMET issue WQE.
        Fix nvme initiator handling when not enabled.
        Fix driver usage of 128B WQEs when WQ_CREATE is V1.
        Fix driver unload/reload operation.
        ...
      08c521a2
    • Linus Torvalds's avatar
      Merge branch 'for-4.12/block' of git://git.kernel.dk/linux-block · 69475292
      Linus Torvalds authored
      Pull block layer updates from Jens Axboe:
      
       - Add BFQ IO scheduler under the new blk-mq scheduling framework. BFQ
         was initially a fork of CFQ, but subsequently changed to implement
         fairness based on B-WF2Q+, a modified variant of WF2Q. BFQ is meant
         to be used on desktop type single drives, providing good fairness.
         From Paolo.
      
       - Add Kyber IO scheduler. This is a full multiqueue aware scheduler,
         using a scalable token based algorithm that throttles IO based on
         live completion IO stats, similary to blk-wbt. From Omar.
      
       - A series from Jan, moving users to separately allocated backing
         devices. This continues the work of separating backing device life
         times, solving various problems with hot removal.
      
       - A series of updates for lightnvm, mostly from Javier. Includes a
         'pblk' target that exposes an open channel SSD as a physical block
         device.
      
       - A series of fixes and improvements for nbd from Josef.
      
       - A series from Omar, removing queue sharing between devices on mostly
         legacy drivers. This helps us clean up other bits, if we know that a
         queue only has a single device backing. This has been overdue for
         more than a decade.
      
       - Fixes for the blk-stats, and improvements to unify the stats and user
         windows. This both improves blk-wbt, and enables other users to
         register a need to receive IO stats for a device. From Omar.
      
       - blk-throttle improvements from Shaohua. This provides a scalable
         framework for implementing scalable priotization - particularly for
         blk-mq, but applicable to any type of block device. The interface is
         marked experimental for now.
      
       - Bucketized IO stats for IO polling from Stephen Bates. This improves
         efficiency of polled workloads in the presence of mixed block size
         IO.
      
       - A few fixes for opal, from Scott.
      
       - A few pulls for NVMe, including a lot of fixes for NVMe-over-fabrics.
         From a variety of folks, mostly Sagi and James Smart.
      
       - A series from Bart, improving our exposed info and capabilities from
         the blk-mq debugfs support.
      
       - A series from Christoph, cleaning up how handle WRITE_ZEROES.
      
       - A series from Christoph, cleaning up the block layer handling of how
         we track errors in a request. On top of being a nice cleanup, it also
         shrinks the size of struct request a bit.
      
       - Removal of mg_disk and hd (sorry Linus) by Christoph. The former was
         never used by platforms, and the latter has outlived it's usefulness.
      
       - Various little bug fixes and cleanups from a wide variety of folks.
      
      * 'for-4.12/block' of git://git.kernel.dk/linux-block: (329 commits)
        block: hide badblocks attribute by default
        blk-mq: unify hctx delay_work and run_work
        block: add kblock_mod_delayed_work_on()
        blk-mq: unify hctx delayed_run_work and run_work
        nbd: fix use after free on module unload
        MAINTAINERS: bfq: Add Paolo as maintainer for the BFQ I/O scheduler
        blk-mq-sched: alloate reserved tags out of normal pool
        mtip32xx: use runtime tag to initialize command header
        scsi: Implement blk_mq_ops.show_rq()
        blk-mq: Add blk_mq_ops.show_rq()
        blk-mq: Show operation, cmd_flags and rq_flags names
        blk-mq: Make blk_flags_show() callers append a newline character
        blk-mq: Move the "state" debugfs attribute one level down
        blk-mq: Unregister debugfs attributes earlier
        blk-mq: Only unregister hctxs for which registration succeeded
        blk-mq-debugfs: Rename functions for registering and unregistering the mq directory
        blk-mq: Let blk_mq_debugfs_register() look up the queue name
        blk-mq: Register <dev>/queue/mq after having registered <dev>/queue
        ide-pm: always pass 0 error to ide_complete_rq in ide_do_devset
        ide-pm: always pass 0 error to __blk_end_request_all
        ..
      69475292
    • Linus Torvalds's avatar
      Linux 4.11 · a351e9b9
      Linus Torvalds authored
      a351e9b9
  2. 30 Apr, 2017 4 commits
  3. 29 Apr, 2017 3 commits
  4. 28 Apr, 2017 16 commits
    • Christoph Hellwig's avatar
      libata: remove SCT WRITE SAME support · 63ccc191
      Christoph Hellwig authored
      This was already disabled a while ago because it caused I/O errors,
      and it's severly getting into the way of the discard / write zeroes
      rework.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      63ccc191
    • Christoph Hellwig's avatar
      libata: reject passthrough WRITE SAME requests · c6ade20f
      Christoph Hellwig authored
      The WRITE SAME to TRIM translation rewrites the DATA OUT buffer.  While
      the SCSI code accomodates for this by passing a read-writable buffer
      userspace applications don't cater for this behavior.  In fact it can
      be used to rewrite e.g. a readonly file through mmap and should be
      considered as a security fix.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Cc: stable@vger.kernel.org
      Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      c6ade20f
    • Zefan Li's avatar
      cgroup: avoid attaching a cgroup root to two different superblocks, take 2 · 9732adc5
      Zefan Li authored
      Commit bfb0b80d ("cgroup: avoid attaching a cgroup root to two
      different superblocks") is broken.  Now we try to fix the race by
      delaying the initialization of cgroup root refcnt until a superblock
      has been allocated.
      Reported-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Reported-by: default avatarAndrei Vagin <avagin@virtuozzo.com>
      Tested-by: default avatarAndrei Vagin <avagin@virtuozzo.com>
      Signed-off-by: default avatarZefan Li <lizefan@huawei.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      9732adc5
    • Rafael J. Wysocki's avatar
      Merge branches 'acpi-power', 'acpi-blacklist', 'acpi-video' and 'acpi-doc' · 52e70c8a
      Rafael J. Wysocki authored
      * acpi-power:
        power: supply: axp288_charger: Only wait for INT3496 device if present
        ACPI / AC: Add a blacklist with PMIC ACPI HIDs with a native charger driver
        ACPI / battery: Add a blacklist with PMIC ACPI HIDs with a native battery driver
        ACPI / battery: Fix acpi_battery_exit on acpi_battery_init_async errors
        ACPI / utils: Add new acpi_dev_present helper
      
      * acpi-blacklist:
        ACPI / blacklist: add _REV quirk for Dell Inspiron 7537
      
      * acpi-video:
        ACPI / video: add comments about subtle cases
        ACPI / video: get rid of magic numbers and use enum instead
      
      * acpi-doc:
        ACPI / doc: linuxized-acpica.txt: fix typos
      52e70c8a
    • Rafael J. Wysocki's avatar
      Merge branches 'acpi-processor', 'acpi-cppc' and 'acpi-pmic' · 168f4a69
      Rafael J. Wysocki authored
      * acpi-processor:
        ACPI / Processor: Drop setup_max_cpus check from acpi_processor_add()
      
      * acpi-cppc:
        ACPI / CPPC: add sysfs entries for CPPC perf capabilities
        ACPI / CPPC: Read lowest nonlinear perf in cppc_get_perf_caps()
      
      * acpi-pmic:
        ACPI / PMIC: Stop xpower OPRegion handler relying on IIO
        ACPI / PMIC: Add opregion driver for Intel CHT Whiskey Cove PMIC
      168f4a69
    • Rafael J. Wysocki's avatar
      Merge branches 'acpi-scan', 'acpi-tables' and 'acpi-platform' · 131b3a8d
      Rafael J. Wysocki authored
      * acpi-scan:
        ACPI / scan: Avoid enumerating devices more than once
        ACPI / scan: Apply default enumeration to devices with ACPI drivers
        ACPI / scan: Drop support for force_remove
      
      * acpi-tables:
        ACPI / tables: Drop acpi_parse_entries() which is not used
      
      * acpi-platform:
        ACPI / platform: Update platform device NUMA node based on _PXM method
      131b3a8d
    • Rafael J. Wysocki's avatar
      Merge branch 'pm-tools' · a1d2fcfd
      Rafael J. Wysocki authored
      * pm-tools:
        tools: power: pm-graph: Package makefile and man pages
        tools: power: pm-graph: AnalyzeBoot v2.0
        tools: power: pm-graph: AnalyzeSuspend v4.6
        tools/power/x86/intel_pstate_tracer: Adjust directory ownership
      a1d2fcfd
    • Rafael J. Wysocki's avatar
      Merge branches 'pm-cpuidle', 'pm-core', 'pm-domains', 'pm-avs' and 'pm-devfreq' · 060d0fbb
      Rafael J. Wysocki authored
      * pm-cpuidle:
        cpuidle: powernv: Avoid a branch in the core snooze_loop() loop
        cpuidle: powernv: Don't continually set thread priority in snooze_loop()
        cpuidle: powernv: Don't bounce between low and very low thread priority
        cpuidle: cpuidle-cps: remove unused variable
        powernv-cpuidle: Validate DT property array size
      
      * pm-core:
        PM / runtime: Document autosuspend-helper side effects
        PM / runtime: Fix autosuspend documentation
      
      * pm-domains:
        PM / Domains: Ignore domain-idle-states that are not compatible
        PM / Domains: Don't warn about IRQ safe device for an always on PM domain
        PM / Domains: Respect errors from genpd's ->power_off() callback
        PM / Domains: Enable users of genpd to specify always on PM domains
        PM / Domains: Clean up code validating genpd's status
        PM / Domain: remove conditional from error case
      
      * pm-avs:
        PM / AVS: rockchip-io: add io selectors and supplies for rk3328
      
      * pm-devfreq:
        PM / devfreq: Move struct devfreq_governor to devfreq directory
      060d0fbb
    • Rafael J. Wysocki's avatar
      Merge branch 'pm-cpufreq' · 0807ee0f
      Rafael J. Wysocki authored
      * pm-cpufreq: (37 commits)
        cpufreq: Add Tegra186 cpufreq driver
        cpufreq: imx6q: Fix error handling code
        cpufreq: imx6q: Set max suspend_freq to avoid changes during suspend
        cpufreq: imx6q: Fix handling EPROBE_DEFER from regulator
        cpufreq: schedutil: Use policy-dependent transition delays
        cpufreq: schedutil: Reduce frequencies slower
        cpufreq: intel_pstate: Add support for Gemini Lake
        cpufreq: intel_pstate: Eliminate intel_pstate_get_min_max()
        cpufreq: intel_pstate: Do not walk policy->cpus
        cpufreq: intel_pstate: Introduce pid_in_use()
        cpufreq: intel_pstate: Drop struct cpu_defaults
        cpufreq: intel_pstate: Move cpu_defaults definitions
        cpufreq: intel_pstate: Add update_util callback to pstate_funcs
        cpufreq: intel_pstate: Use different utilization update callbacks
        cpufreq: intel_pstate: Modify check in intel_pstate_update_status()
        cpufreq: intel_pstate: Drop driver_registered variable
        cpufreq: intel_pstate: Skip unnecessary PID resets on init
        cpufreq: intel_pstate: Set HWP sampling interval once
        cpufreq: intel_pstate: Clean up intel_pstate_busy_pid_reset()
        cpufreq: intel_pstate: Fold intel_pstate_reset_all_pid() into the caller
        ...
      0807ee0f
    • Rafael J. Wysocki's avatar
      2addac72
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 0e911788
      Linus Torvalds authored
      Pull networking fixes from David Miller:
       "Just a couple more stragglers, I really hope this is it.
      
        1) Don't let frags slip down into the GRO segmentation handlers, from
           Steffen Klassert.
      
        2) Truesize under-estimation triggers warnings in TCP over loopback
           with socket filters, 2 part fix from Eric Dumazet.
      
        3) Fix undesirable reset of bonding MTU to ETH_HLEN on slave removal,
           from Paolo Abeni.
      
        4) If we flush the XFRM policy after garbage collection, it doesn't
           work because stray entries can be created afterwards. Fix from Xin
           Long.
      
        5) Hung socket connection fixes in TIPC from Parthasarathy Bhuvaragan.
      
        6) Fix GRO regression with IPSEC when netfilter is disabled, from
           Sabrina Dubroca.
      
        7) Fix cpsw driver Kconfig dependency regression, from Arnd Bergmann"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
        net: hso: register netdev later to avoid a race condition
        net: adjust skb->truesize in ___pskb_trim()
        tcp: do not underestimate skb->truesize in tcp_trim_head()
        bonding: avoid defaulting hard_header_len to ETH_HLEN on slave removal
        ipv4: Don't pass IP fragments to upper layer GRO handlers.
        cpsw/netcp: refine cpts dependency
        tipc: close the connection if protocol messages contain errors
        tipc: improve error validations for sockets in CONNECTING state
        tipc: Fix missing connection request handling
        xfrm: fix GRO for !CONFIG_NETFILTER
        xfrm: do the garbage collection after flushing policy
      0e911788
    • Rafael J. Wysocki's avatar
      2dee4b0e
    • Andreas Kemnade's avatar
      net: hso: register netdev later to avoid a race condition · 4c761daf
      Andreas Kemnade authored
      If the netdev is accessed before the urbs are initialized,
      there will be NULL pointer dereferences. That is avoided by
      registering it when it is fully initialized.
      
      This case occurs e.g. if dhcpcd is running in the background
      and the device is probed, either after insmod hso or
      when the device appears on the usb bus.
      
      A backtrace is the following:
      
      [ 1357.356048] usb 1-2: new high-speed USB device number 12 using ehci-omap
      [ 1357.551177] usb 1-2: New USB device found, idVendor=0af0, idProduct=8800
      [ 1357.558654] usb 1-2: New USB device strings: Mfr=3, Product=2, SerialNumber=0
      [ 1357.568572] usb 1-2: Product: Globetrotter HSUPA Modem
      [ 1357.574096] usb 1-2: Manufacturer: Option N.V.
      [ 1357.685882] hso 1-2:1.5: Not our interface
      [ 1460.886352] hso: unloaded
      [ 1460.889984] usbcore: deregistering interface driver hso
      [ 1513.769134] hso: ../drivers/net/usb/hso.c: Option Wireless
      [ 1513.846771] Unable to handle kernel NULL pointer dereference at virtual address 00000030
      [ 1513.887664] hso 1-2:1.5: Not our interface
      [ 1513.906890] usbcore: registered new interface driver hso
      [ 1513.937988] pgd = ecdec000
      [ 1513.949890] [00000030] *pgd=acd15831, *pte=00000000, *ppte=00000000
      [ 1513.956573] Internal error: Oops: 817 [#1] PREEMPT SMP ARM
      [ 1513.962371] Modules linked in: hso usb_f_ecm omap2430 bnep bluetooth g_ether usb_f_rndis u_ether libcomposite configfs ipv6 arc4 wl18xx wlcore mac80211 cfg80211 bq27xxx_battery panel_tpo_td028ttec1 omapdrm drm_kms_helper cfbfillrect snd_soc_simple_card syscopyarea cfbimgblt snd_soc_simple_card_utils sysfillrect sysimgblt fb_sys_fops snd_soc_omap_twl4030 cfbcopyarea encoder_opa362 drm twl4030_madc_hwmon wwan_on_off snd_soc_gtm601 pwm_omap_dmtimer generic_adc_battery connector_analog_tv pwm_bl extcon_gpio omap3_isp wlcore_sdio videobuf2_dma_contig videobuf2_memops w1_bq27000 videobuf2_v4l2 videobuf2_core omap_hdq snd_soc_omap_mcbsp ov9650 snd_soc_omap bmp280_i2c bmg160_i2c v4l2_common snd_pcm_dmaengine bmp280 bmg160_core at24 bmc150_magn_i2c nvmem_core videodev phy_twl4030_usb bmc150_accel_i2c tsc2007
      [ 1514.037384]  bmc150_magn bmc150_accel_core media leds_tca6507 bno055 industrialio_triggered_buffer kfifo_buf gpio_twl4030 musb_hdrc snd_soc_twl4030 twl4030_vibra twl4030_madc twl4030_pwrbutton twl4030_charger industrialio w2sg0004 ehci_omap omapdss [last unloaded: hso]
      [ 1514.062622] CPU: 0 PID: 3433 Comm: dhcpcd Tainted: G        W       4.11.0-rc8-letux+ #1
      [ 1514.071136] Hardware name: Generic OMAP36xx (Flattened Device Tree)
      [ 1514.077758] task: ee748240 task.stack: ecdd6000
      [ 1514.082580] PC is at hso_start_net_device+0x50/0xc0 [hso]
      [ 1514.088287] LR is at hso_net_open+0x68/0x84 [hso]
      [ 1514.093231] pc : [<bf79c304>]    lr : [<bf79ced8>]    psr: a00f0013
      sp : ecdd7e20  ip : 00000000  fp : ffffffff
      [ 1514.105316] r10: 00000000  r9 : ed0e080c  r8 : ecd8fe2c
      [ 1514.110839] r7 : bf79cef4  r6 : ecd8fe00  r5 : 00000000  r4 : ed0dbd80
      [ 1514.117706] r3 : 00000000  r2 : c0020c80  r1 : 00000000  r0 : ecdb7800
      [ 1514.124572] Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
      [ 1514.132110] Control: 10c5387d  Table: acdec019  DAC: 00000051
      [ 1514.138153] Process dhcpcd (pid: 3433, stack limit = 0xecdd6218)
      [ 1514.144470] Stack: (0xecdd7e20 to 0xecdd8000)
      [ 1514.149078] 7e20: ed0dbd80 ecd8fe98 00000001 00000000 ecd8f800 ecd8fe00 ecd8fe60 00000000
      [ 1514.157714] 7e40: ed0e080c bf79ced8 bf79ce70 ecd8f800 00000001 bf7a0258 ecd8f830 c068d958
      [ 1514.166320] 7e60: c068d8b8 ecd8f800 00000001 00001091 00001090 c068dba4 ecd8f800 00001090
      [ 1514.174926] 7e80: ecd8f940 ecd8f800 00000000 c068dc60 00000000 00000001 ed0e0800 ecd8f800
      [ 1514.183563] 7ea0: 00000000 c06feaa8 c0ca39c2 beea57dc 00000020 00000000 306f7368 00000000
      [ 1514.192169] 7ec0: 00000000 00000000 00001091 00000000 00000000 00000000 00000000 00008914
      [ 1514.200805] 7ee0: eaa9ab60 beea57dc c0c9bfc0 eaa9ab40 00000006 00000000 00046858 c066a948
      [ 1514.209411] 7f00: beea57dc eaa9ab60 ecc6b0c0 c02837b0 00000006 c0282c90 0000c000 c0283654
      [ 1514.218017] 7f20: c09b0c00 c098bc31 00000001 c0c5e513 c0c5e513 00000000 c0151354 c01a20c0
      [ 1514.226654] 7f40: c0c5e513 c01a3134 ecdd6000 c01a3160 ee7487f0 600f0013 00000000 ee748240
      [ 1514.235260] 7f60: ee748734 00000000 ecc6b0c0 ecc6b0c0 beea57dc 00008914 00000006 00000000
      [ 1514.243896] 7f80: 00046858 c02837b0 00001091 0003a1f0 00046608 0003a248 00000036 c01071e4
      [ 1514.252502] 7fa0: ecdd6000 c0107040 0003a1f0 00046608 00000006 00008914 beea57dc 00001091
      [ 1514.261108] 7fc0: 0003a1f0 00046608 0003a248 00000036 0003ac0c 00046608 00046610 00046858
      [ 1514.269744] 7fe0: 0003a0ac beea57d4 000167eb b6f23106 400f0030 00000006 00000000 00000000
      [ 1514.278411] [<bf79c304>] (hso_start_net_device [hso]) from [<bf79ced8>] (hso_net_open+0x68/0x84 [hso])
      [ 1514.288238] [<bf79ced8>] (hso_net_open [hso]) from [<c068d958>] (__dev_open+0xa0/0xf4)
      [ 1514.296600] [<c068d958>] (__dev_open) from [<c068dba4>] (__dev_change_flags+0x8c/0x130)
      [ 1514.305023] [<c068dba4>] (__dev_change_flags) from [<c068dc60>] (dev_change_flags+0x18/0x48)
      [ 1514.313934] [<c068dc60>] (dev_change_flags) from [<c06feaa8>] (devinet_ioctl+0x348/0x714)
      [ 1514.322540] [<c06feaa8>] (devinet_ioctl) from [<c066a948>] (sock_ioctl+0x2b0/0x308)
      [ 1514.330627] [<c066a948>] (sock_ioctl) from [<c0282c90>] (vfs_ioctl+0x20/0x34)
      [ 1514.338165] [<c0282c90>] (vfs_ioctl) from [<c0283654>] (do_vfs_ioctl+0x82c/0x93c)
      [ 1514.346038] [<c0283654>] (do_vfs_ioctl) from [<c02837b0>] (SyS_ioctl+0x4c/0x74)
      [ 1514.353759] [<c02837b0>] (SyS_ioctl) from [<c0107040>] (ret_fast_syscall+0x0/0x1c)
      [ 1514.361755] Code: e3822103 e3822080 e1822781 e5981014 (e5832030)
      [ 1514.510833] ---[ end trace dfb3e53c657f34a0 ]---
      Reported-by: default avatarH. Nikolaus Schaller <hns@goldelico.com>
      Signed-off-by: default avatarAndreas Kemnade <andreas@kemnade.info>
      Reviewed-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4c761daf
    • Eric Dumazet's avatar
      net: adjust skb->truesize in ___pskb_trim() · c21b48cc
      Eric Dumazet authored
      Andrey found a way to trigger the WARN_ON_ONCE(delta < len) in
      skb_try_coalesce() using syzkaller and a filter attached to a TCP
      socket.
      
      As we did recently in commit 158f323b ("net: adjust skb->truesize in
      pskb_expand_head()") we can adjust skb->truesize from ___pskb_trim(),
      via a call to skb_condense().
      
      If all frags were freed, then skb->truesize can be recomputed.
      
      This call can be done if skb is not yet owned, or destructor is
      sock_edemux().
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarAndrey Konovalov <andreyknvl@google.com>
      Cc: Willem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c21b48cc
    • Eric Dumazet's avatar
      tcp: do not underestimate skb->truesize in tcp_trim_head() · 7162fb24
      Eric Dumazet authored
      Andrey found a way to trigger the WARN_ON_ONCE(delta < len) in
      skb_try_coalesce() using syzkaller and a filter attached to a TCP
      socket over loopback interface.
      
      I believe one issue with looped skbs is that tcp_trim_head() can end up
      producing skb with under estimated truesize.
      
      It hardly matters for normal conditions, since packets sent over
      loopback are never truncated.
      
      Bytes trimmed from skb->head should not change skb truesize, since
      skb->head is not reallocated.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarAndrey Konovalov <andreyknvl@google.com>
      Tested-by: default avatarAndrey Konovalov <andreyknvl@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7162fb24
    • Paolo Abeni's avatar
      bonding: avoid defaulting hard_header_len to ETH_HLEN on slave removal · 19cdead3
      Paolo Abeni authored
      On slave list updates, the bonding driver computes its hard_header_len
      as the maximum of all enslaved devices's hard_header_len.
      If the slave list is empty, e.g. on last enslaved device removal,
      ETH_HLEN is used.
      
      Since the bonding header_ops are set only when the first enslaved
      device is attached, the above can lead to header_ops->create()
      being called with the wrong skb headroom in place.
      
      If bond0 is configured on top of ipoib devices, with the
      following commands:
      
      ifup bond0
      for slave in $BOND_SLAVES_LIST; do
      	ip link set dev $slave nomaster
      done
      ping -c 1 <ip on bond0 subnet>
      
      we will obtain a skb_under_panic() with a similar call trace:
      	skb_push+0x3d/0x40
      	push_pseudo_header+0x17/0x30 [ib_ipoib]
      	ipoib_hard_header+0x4e/0x80 [ib_ipoib]
      	arp_create+0x12f/0x220
      	arp_send_dst.part.19+0x28/0x50
      	arp_solicit+0x115/0x290
      	neigh_probe+0x4d/0x70
      	__neigh_event_send+0xa7/0x230
      	neigh_resolve_output+0x12e/0x1c0
      	ip_finish_output2+0x14b/0x390
      	ip_finish_output+0x136/0x1e0
      	ip_output+0x76/0xe0
      	ip_local_out+0x35/0x40
      	ip_send_skb+0x19/0x40
      	ip_push_pending_frames+0x33/0x40
      	raw_sendmsg+0x7d3/0xb50
      	inet_sendmsg+0x31/0xb0
      	sock_sendmsg+0x38/0x50
      	SYSC_sendto+0x102/0x190
      	SyS_sendto+0xe/0x10
      	do_syscall_64+0x67/0x180
      	entry_SYSCALL64_slow_path+0x25/0x25
      
      This change addresses the issue avoiding updating the bonding device
      hard_header_len when the slaves list become empty, forbidding to
      shrink it below the value used by header_ops->create().
      
      The bug is there since commit 54ef3137 ("[PATCH] bonding: Handle large
      hard_header_len") but the panic can be triggered only since
      commit fc791b63 ("IB/ipoib: move back IB LL address into the hard
      header").
      Reported-by: default avatarNorbert P <noe@physik.uzh.ch>
      Fixes: 54ef3137 ("[PATCH] bonding: Handle large hard_header_len")
      Fixes: fc791b63 ("IB/ipoib: move back IB LL address into the hard header")
      Signed-off-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Signed-off-by: default avatarJay Vosburgh <jay.vosburgh@canonical.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      19cdead3