From: Yves-Alexis Perez <corsac@corsac.net>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-kernel@vger.kernel.org, Ben Gamari <ben@smart-cactus.org>
Cc: stable@vger.kernel.org, "Luis R. Rodriguez" <mcgrof@kernel.org>,
Ming Lei <ming.lei@canonical.com>,
Bjorn Andersson <bjorn.andersson@linaro.org>
Subject: Re: [PATCH 4.8 50/96] firmware: fix usermode helper fallback loading
Date: Fri, 06 Jan 2017 22:54:38 +0100 [thread overview]
Message-ID: <1483739678.4969.7.camel@corsac.net> (raw)
In-Reply-To: <20170106214229.739771341@linuxfoundation.org>
[-- Attachment #1: Type: text/plain, Size: 4957 bytes --]
On Fri, 2017-01-06 at 22:43 +0100, Greg Kroah-Hartman wrote:
> 4.8-stable review patch. If anyone has any objections, please let me know.
Hi Greg,
Ben Gamari think there was a regression in that patch so I'm adding him to
recipients so he can voice concerns if needed.
Regards,
>
> ------------------
>
> From: Yves-Alexis Perez <corsac@corsac.net>
>
> commit 2e700f8d85975f516ccaad821278c1fe66b2cc98 upstream.
>
> When you use the firmware usermode helper fallback with a timeout value set
> to a
> value greater than INT_MAX (2147483647) a cast overflow issue causes the
> timeout value to go negative and breaks all usermode helper loading. This
> regression was introduced through commit 68ff2a00dbf5 ("firmware_loader:
> handle timeout via wait_for_completion_interruptible_timeout()") on kernel
> v4.0.
>
> The firmware_class drivers relies on the firmware usermode helper
> fallback as a mechanism to look for firmware if the direct filesystem
> search failed only if:
>
> a) You've enabled CONFIG_FW_LOADER_USER_HELPER_FALLBACK (not many
> distros):
>
> Then all of these callers will rely on the fallback mechanism in case
> the firmware is not found through an initial direct filesystem lookup:
>
> o request_firmware()
> o request_firmware_into_buf()
> o request_firmware_nowait()
>
> b) If you've only enabled CONFIG_FW_LOADER_USER_HELPER (most distros):
>
> Then only callers using request_firmware_nowait() with the second
> argument set to false, this explicitly is requesting the UMH firmware
> fallback to be relied on in case the first filesystem lookup fails.
>
> Using Coccinelle SmPL grammar we have identified only two drivers
> explicitly requesting the UMH firmware fallback mechanism:
>
> - drivers/firmware/dell_rbu.c
> - drivers/leds/leds-lp55xx-common.c
>
> Since most distributions only enable CONFIG_FW_LOADER_USER_HELPER the
> biggest impact of this regression are users of the dell_rbu and
> leds-lp55xx-common device driver which required the UMH to find their
> respective needed firmwares.
>
> The default timeout for the UMH is set to 60 seconds always, as of
> commit 68ff2a00dbf5 ("firmware_loader: handle timeout via
> wait_for_completion_interruptible_timeout()") the timeout was bumped
> to MAX_JIFFY_OFFSET ((LONG_MAX >> 1)-1). Additionally the MAX_JIFFY_OFFSET
> value was also used if the timeout was configured by a user to 0.
>
> The following works:
>
> echo 2147483647 > /sys/class/firmware/timeout
>
> But both of the following set the timeout to MAX_JIFFY_OFFSET even if
> we display 0 back to userspace:
>
> echo 2147483648 > /sys/class/firmware/timeout
> cat /sys/class/firmware/timeout
> 0
>
> echo 0> /sys/class/firmware/timeout
> cat /sys/class/firmware/timeout
> 0
>
> A max value of INT_MAX (2147483647) seconds is therefore implicit due to the
> another cast with simple_strtol().
>
> This fixes the secondary cast (the first one is simple_strtol() but its an
> issue only by forcing an implicit limit) by re-using the timeout variable
> and
> only setting retval in appropriate cases.
>
> Lastly worth noting systemd had ripped out the UMH firmware fallback
> mechanism from udev since udev 2014 via commit be2ea723b1d023b3d
> ("udev: remove userspace firmware loading support"), so as of systemd v217.
>
> Signed-off-by: Yves-Alexis Perez <corsac@corsac.net>
> Fixes: 68ff2a00dbf5 "firmware_loader: handle timeout via
> wait_for_completion_interruptible_timeout()"
> Cc: Luis R. Rodriguez <mcgrof@kernel.org>
> Cc: Ming Lei <ming.lei@canonical.com>
> Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Acked-by: Luis R. Rodriguez <mcgrof@kernel.org>
> Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> [mcgrof@kernel.org: gave commit log a whole lot of love]
> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>
> ---
> drivers/base/firmware_class.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> --- a/drivers/base/firmware_class.c
> +++ b/drivers/base/firmware_class.c
> @@ -955,13 +955,14 @@ static int _request_firmware_load(struct
> timeout = MAX_JIFFY_OFFSET;
> }
>
> - retval = wait_for_completion_interruptible_timeout(&buf-
> >completion,
> + timeout = wait_for_completion_interruptible_timeout(&buf-
> >completion,
> timeout);
> - if (retval == -ERESTARTSYS || !retval) {
> + if (timeout == -ERESTARTSYS || !timeout) {
> + retval = timeout;
> mutex_lock(&fw_lock);
> fw_load_abort(fw_priv);
> mutex_unlock(&fw_lock);
> - } else if (retval > 0) {
> + } else if (timeout > 0) {
> retval = 0;
> }
>
>
>
--
Yves-Alexis
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2017-01-06 21:54 UTC|newest]
Thread overview: 97+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20170106215010epcas3p298f6cd3d6c81baf1e1e724741444d929@epcas3p2.samsung.com>
2017-01-06 21:42 ` [PATCH 4.8 00/96] 4.8.17-stable review Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 01/96] ssb: Fix error routine when fallback SPROM fails Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 02/96] rtlwifi: Fix enter/exit power_save Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 03/96] perf/x86: Fix exclusion of BTS and LBR for Goldmont Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 04/96] perf/x86/intel/cstate: Prevent hotplug callback leak Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 05/96] rtl8xxxu: Work around issue with 8192eu and 8723bu devices not reconnecting Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 06/96] cfg80211/mac80211: fix BSS leaks when abandoning assoc attempts Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 07/96] ath9k: fix ath9k_hw_gpio_get() to return 0 or 1 on success Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 08/96] ath9k: Really fix LED polarity for some Mini PCI AR9220 MB92 cards Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 09/96] mmc: sdhci: Fix recovery from tuning timeout Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 10/96] regulator: stw481x-vmmc: fix ages old enable error Greg Kroah-Hartman
2017-01-06 21:42 ` [PATCH 4.8 11/96] timekeeping_Force_unsigned_clocksource_to_nanoseconds_conversion Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 12/96] gpio: chardev: Return error for seek operations Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 13/96] arm64: tegra: Add VDD_GPU regulator to Jetson TX1 Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 14/96] clk: bcm2835: Avoid overwriting the div info when disabling a pll_div clk Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 15/96] thermal: hwmon: Properly report critical temperature in sysfs Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 16/96] docs: sphinx-extensions: make rstFlatTable work with docutils 0.13 Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 17/96] hv: acquire vmbus_connection.channel_mutex in vmbus_free_channels() Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 18/96] staging: comedi: ni_mio_common: fix M Series ni_ai_insn_read() data mask Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 19/96] staging: comedi: ni_mio_common: fix E series ni_ai_insn_read() data Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 20/96] ACPI / video: Add force_native quirk for Dell XPS 17 L702X Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 21/96] ACPI / video: Add force_native quirk for HP Pavilion dv6 Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 22/96] drm/amd/amdgpu: enable GUI idle INT after enabling CGCG Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 23/96] drm/nouveau/gr: fallback to legacy paths during firmware lookup Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 24/96] drm/nouveau/kms: lvds panel strap moved again on maxwell Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 25/96] drm/nouveau/bios: require checksum to match for fast acpi shadow method Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 26/96] drm/nouveau/ltc: protect clearing of comptags with mutex Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 27/96] drm/nouveau/ttm: wait for bo fence to signal before unmapping vmas Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 28/96] drm/nouveau/i2c/gk110b,gm10x: use the correct implementation Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 29/96] drm/nouveau/fifo/gf100-: protect channel preempt with subdev mutex Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 32/96] drm/radeon: add additional pci revision to dpm workaround Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 33/96] drm/radeon/si: load the proper firmware on 0x87 oland boards Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 34/96] drm/gma500: Add compat ioctl Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 35/96] drm/amdgpu: fix init save/restore list in gfx_v8.0 Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 36/96] drivers/gpu/drm/ast: Fix infinite loop if read fails Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 37/96] mei: request async autosuspend at the end of enumeration Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 38/96] mei: me: add lewisburg device ids Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 39/96] block: protect iterate_bdevs() against concurrent close Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 40/96] vt: fix Scroll Lock LED trigger name Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 41/96] stm class: Fix device leak in open error path Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 42/96] scsi: megaraid_sas: For SRIOV enabled firmware, ensure VF driver waits for 30secs before reset Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 43/96] scsi: megaraid_sas: Do not set MPI2_TYPE_CUDA for JBOD FP path for FW which does not support JBOD sequence map Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 44/96] iscsi-target: Return error if unable to add network portal Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 45/96] scsi: zfcp: fix use-after-"free" in FC ingress path after TMF Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 46/96] scsi: zfcp: do not trace pure benign residual HBA responses at default level Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 47/96] scsi: zfcp: fix rport unblock race with LUN recovery Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 48/96] scsi: avoid a permanent stop of the scsi devices request queue Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 49/96] ARC: mm: arc700: Dont assume 2 colours for aliasing VIPT dcache Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 50/96] firmware: fix usermode helper fallback loading Greg Kroah-Hartman
2017-01-06 21:54 ` Yves-Alexis Perez [this message]
2017-01-13 10:58 ` Greg Kroah-Hartman
2017-03-24 20:01 ` Ben Gamari
2017-03-30 4:06 ` Luis R. Rodriguez
2017-01-06 21:43 ` [PATCH 4.8 51/96] s390/vmlogrdr: fix IUCV buffer allocation Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 52/96] s390/kexec: use node 0 when re-adding crash kernel memory Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 53/96] arm64: KVM: pmu: Reset PMSELR_EL0.SEL to a sane value before entering the guest Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 54/96] sc16is7xx: Drop bogus use of IRQF_ONESHOT Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 55/96] md/raid5: limit request size according to implementation limits Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 56/96] scsi: aacraid: remove wildcard for series 9 controllers Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 57/96] KVM: PPC: Book3S HV: Save/restore XER in checkpointed register state Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 58/96] KVM: PPC: Book3S HV: Dont lose hardware R/C bit updates in H_PROTECT Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 59/96] kvm: nVMX: Allow L1 to intercept software exceptions (#BP and #OF) Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 60/96] fsnotify: Fix possible use-after-free in inode iteration on umount Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 61/96] vsock/virtio: fix src/dst cid format Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 62/96] ftrace/x86_32: Set ftrace_stub to weak to prevent gcc from using short jumps to it Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 63/96] platform/x86: asus-nb-wmi.c: Add X45U quirk Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 64/96] fgraph: Handle a case where a tracer ignores set_graph_notrace Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 65/96] IB/mad: Fix an array index check Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 66/96] IPoIB: Avoid reading an uninitialized member variable Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 67/96] IB/multicast: Check ib_find_pkey() return value Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 68/96] IB/rxe: Fix a memory leak in rxe_qp_cleanup() Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 69/96] IB/cma: Fix a race condition in iboe_addr_get_sgid() Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 70/96] [media] mn88472: fix chip id check on probe Greg Kroah-Hartman
2017-01-06 21:43 ` [PATCH 4.8 71/96] [media] mn88473: " Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 72/96] [media] s5p-mfc: fix failure path of s5p_mfc_alloc_memdev() Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 73/96] [media] media: solo6x10: fix lockup by avoiding delayed register write Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 74/96] [media] v4l: tvp5150: Add missing break in set control handler Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 75/96] Input: drv260x - fix input devices parent assignment Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 76/96] i40iw: Use correct src address in memcpy to rdma stats counters Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 77/96] PCI: Check for PME in targeted sleep state Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 78/96] libceph: verify authorize reply on connect Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 79/96] nfs_write_end(): fix handling of short copies Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 80/96] pNFS: On error, do not send LAYOUTGET until the LAYOUTRETURN has completed Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 81/96] pNFS: Dont clear the layout stateid if a layout return is outstanding Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 82/96] pNFS: Clear NFS_LAYOUT_RETURN_REQUESTED when invalidating the layout stateid Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 83/96] pNFS: Fix a deadlock between read resends and layoutreturn Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 84/96] SUNRPC: fix refcounting problems with auth_gss messages Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 85/96] powerpc/64e: Convert cmpi to cmpwi in head_64.S Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 86/96] powerpc/ps3: Fix system hang with GCC 5 builds Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 87/96] libnvdimm, pfn: fix align attribute Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 88/96] target/user: Fix use-after-free of tcmu_cmds if they are expired Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 89/96] kconfig/nconf: Fix hang when editing symbol with a long prompt Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 90/96] sg_write()/bsg_write() is not fit to be called under KERNEL_DS Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 91/96] net: mvpp2: fix dma unmapping of TX buffers for fragments Greg Kroah-Hartman
2017-01-06 21:44 ` [PATCH 4.8 96/96] drm/i915: skip the first 4k of stolen memory on everything >= gen8 Greg Kroah-Hartman
2017-01-07 2:04 ` [PATCH 4.8 00/96] 4.8.17-stable review Shuah Khan
2017-01-07 15:53 ` Guenter Roeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1483739678.4969.7.camel@corsac.net \
--to=corsac@corsac.net \
--cc=ben@smart-cactus.org \
--cc=bjorn.andersson@linaro.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mcgrof@kernel.org \
--cc=ming.lei@canonical.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).