From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org,
Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>,
"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
Sasha Levin <alexander.levin@verizon.com>
Subject: [PATCH 4.4 20/78] cpuidle: Validate cpu_dev in cpuidle_add_sysfs()
Date: Fri, 22 Dec 2017 09:46:01 +0100 [thread overview]
Message-ID: <20171222084559.235861442@linuxfoundation.org> (raw)
In-Reply-To: <20171222084556.909780563@linuxfoundation.org>
4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
[ Upstream commit ad0a45fd9c14feebd000b6e84189d0edff265170 ]
If a given cpu is not in cpu_present and cpu hotplug
is disabled, arch can skip setting up the cpu_dev.
Arch cpuidle driver should pass correct cpu mask
for registration, but failing to do so by the driver
causes error to propagate and crash like this:
[ 30.076045] Unable to handle kernel paging request for data at address 0x00000048
[ 30.076100] Faulting instruction address: 0xc0000000007b2f30
cpu 0x4d: Vector: 300 (Data Access) at [c000003feb18b670]
pc: c0000000007b2f30: kobject_get+0x20/0x70
lr: c0000000007b3c94: kobject_add_internal+0x54/0x3f0
sp: c000003feb18b8f0
msr: 9000000000009033
dar: 48
dsisr: 40000000
current = 0xc000003fd2ed8300
paca = 0xc00000000fbab500 softe: 0 irq_happened: 0x01
pid = 1, comm = swapper/0
Linux version 4.11.0-rc2-svaidy+ (sv@sagarika) (gcc version 6.2.0
20161005 (Ubuntu 6.2.0-5ubuntu12) ) #10 SMP Sun Mar 19 00:08:09 IST 2017
enter ? for help
[c000003feb18b960] c0000000007b3c94 kobject_add_internal+0x54/0x3f0
[c000003feb18b9f0] c0000000007b43a4 kobject_init_and_add+0x64/0xa0
[c000003feb18ba70] c000000000e284f4 cpuidle_add_sysfs+0xb4/0x130
[c000003feb18baf0] c000000000e26038 cpuidle_register_device+0x118/0x1c0
[c000003feb18bb30] c000000000e26c48 cpuidle_register+0x78/0x120
[c000003feb18bbc0] c00000000168fd9c powernv_processor_idle_init+0x110/0x1c4
[c000003feb18bc40] c00000000000cff8 do_one_initcall+0x68/0x1d0
[c000003feb18bd00] c0000000016242f4 kernel_init_freeable+0x280/0x360
[c000003feb18bdc0] c00000000000d864 kernel_init+0x24/0x160
[c000003feb18be30] c00000000000b4e8 ret_from_kernel_thread+0x5c/0x74
Validating cpu_dev fixes the crash and reports correct error message like:
[ 30.163506] Failed to register cpuidle device for cpu136
[ 30.173329] Registration of powernv driver failed.
Signed-off-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
[ rjw: Comment massage ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/cpuidle/sysfs.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
--- a/drivers/cpuidle/sysfs.c
+++ b/drivers/cpuidle/sysfs.c
@@ -613,6 +613,18 @@ int cpuidle_add_sysfs(struct cpuidle_dev
struct device *cpu_dev = get_cpu_device((unsigned long)dev->cpu);
int error;
+ /*
+ * Return if cpu_device is not setup for this CPU.
+ *
+ * This could happen if the arch did not set up cpu_device
+ * since this CPU is not in cpu_present mask and the
+ * driver did not send a correct CPU mask during registration.
+ * Without this check we would end up passing bogus
+ * value for &cpu_dev->kobj in kobject_init_and_add()
+ */
+ if (!cpu_dev)
+ return -ENODEV;
+
kdev = kzalloc(sizeof(*kdev), GFP_KERNEL);
if (!kdev)
return -ENOMEM;
next prev parent reply other threads:[~2017-12-22 10:49 UTC|newest]
Thread overview: 98+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-22 8:45 [PATCH 4.4 00/78] 4.4.108-stable review Greg Kroah-Hartman
2017-12-22 8:45 ` [PATCH 4.4 01/78] arm64: Initialise high_memory global variable earlier Greg Kroah-Hartman
2017-12-22 8:45 ` [PATCH 4.4 02/78] cxl: Check if vphb exists before iterating over AFU devices Greg Kroah-Hartman
2017-12-22 8:45 ` [PATCH 4.4 03/78] x86/mm: Add INVPCID helpers Greg Kroah-Hartman
2017-12-22 8:45 ` Greg Kroah-Hartman
2017-12-22 8:45 ` [PATCH 4.4 04/78] x86/mm: Fix INVPCID asm constraint Greg Kroah-Hartman
2017-12-22 8:45 ` [PATCH 4.4 05/78] x86/mm: Add a noinvpcid boot option to turn off INVPCID Greg Kroah-Hartman
2017-12-22 8:45 ` Greg Kroah-Hartman
2017-12-22 8:45 ` [PATCH 4.4 06/78] x86/mm: If INVPCID is available, use it to flush global mappings Greg Kroah-Hartman
2017-12-22 8:45 ` Greg Kroah-Hartman
2017-12-22 8:45 ` [PATCH 4.4 07/78] mm/rmap: batched invalidations should use existing api Greg Kroah-Hartman
2017-12-22 8:45 ` [PATCH 4.4 08/78] mm/mmu_context, sched/core: Fix mmu_context.h assumption Greg Kroah-Hartman
2017-12-22 8:45 ` [PATCH 4.4 09/78] sched/core: Add switch_mm_irqs_off() and use it in the scheduler Greg Kroah-Hartman
2017-12-22 8:45 ` [PATCH 4.4 10/78] x86/mm: Build arch/x86/mm/tlb.c even on !SMP Greg Kroah-Hartman
2017-12-22 8:45 ` [PATCH 4.4 11/78] x86/mm, sched/core: Uninline switch_mm() Greg Kroah-Hartman
2017-12-22 8:45 ` [PATCH 4.4 12/78] x86/mm, sched/core: Turn off IRQs in switch_mm() Greg Kroah-Hartman
2017-12-22 8:45 ` [PATCH 4.4 13/78] ARM: Hide finish_arch_post_lock_switch() from modules Greg Kroah-Hartman
2017-12-22 8:45 ` Greg Kroah-Hartman
2017-12-22 8:45 ` [PATCH 4.4 14/78] sched/core: Idle_task_exit() shouldnt use switch_mm_irqs_off() Greg Kroah-Hartman
2017-12-22 8:45 ` [PATCH 4.4 15/78] x86/irq: Do not substract irq_tlb_count from irq_call_count Greg Kroah-Hartman
2017-12-22 8:45 ` [PATCH 4.4 16/78] ALSA: hda - add support for docking station for HP 820 G2 Greg Kroah-Hartman
2017-12-22 8:45 ` [PATCH 4.4 17/78] ALSA: hda - add support for docking station for HP 840 G3 Greg Kroah-Hartman
2017-12-22 8:45 ` [PATCH 4.4 18/78] arm: kprobes: Fix the return address of multiple kretprobes Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 19/78] arm: kprobes: Align stack to 8-bytes in test code Greg Kroah-Hartman
2017-12-22 8:46 ` Greg Kroah-Hartman [this message]
2017-12-22 8:46 ` [PATCH 4.4 21/78] r8152: fix the list rx_done may be used without initialization Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 22/78] crypto: deadlock between crypto_alg_sem/rtnl_mutex/genl_mutex Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 23/78] sch_dsmark: fix invalid skb_cow() usage Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 24/78] bna: integer overflow bug in debugfs Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 26/78] usb: gadget: f_uvc: Sanity check wMaxPacketSize for SuperSpeed Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 27/78] usb: gadget: udc: remove pointer dereference after free Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 28/78] netfilter: nfnl_cthelper: fix runtime expectation policy updates Greg Kroah-Hartman
2018-01-20 18:37 ` Ben Hutchings
2017-12-22 8:46 ` [PATCH 4.4 29/78] netfilter: nfnl_cthelper: Fix memory leak Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 30/78] inet: frag: release spinlock before calling icmp_send() Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 31/78] pinctrl: st: add irq_request/release_resources callbacks Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 32/78] scsi: lpfc: Fix PT2PT PRLI reject Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 36/78] hwmon: (asus_atk0110) fix uninitialized data access Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 37/78] i2c: mux: pca954x: Add missing pca9546 definition to chip_desc Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 38/78] HID: xinmo: fix for out of range for THT 2P arcade controller Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 39/78] r8152: prevent the driver from transmitting packets with carrier off Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 40/78] s390/qeth: no ETH header for outbound AF_IUCV Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 41/78] bna: avoid writing uninitialized data into hw registers Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 42/78] net: Do not allow negative values for busy_read and busy_poll sysctl interfaces Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 43/78] i40e: Do not enable NAPI on q_vectors that have no rings Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 44/78] RDMA/iser: Fix possible mr leak on device removal event Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 45/78] irda: vlsi_ir: fix check for DMA mapping errors Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 46/78] netfilter: nfnl_cthelper: fix a race when walk the nf_ct_helper_hash table Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 47/78] netfilter: nf_nat_snmp: Fix panic when snmp_trap_helper fails to register Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 48/78] ARM: dts: am335x-evmsk: adjust mmc2 param to allow suspend Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 49/78] KVM: pci-assign: do not map smm memory slot pages in vt-d page tables Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 50/78] isdn: kcapi: avoid uninitialized data Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 51/78] xhci: plat: Register shutdown for xhci_plat Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 52/78] netfilter: nfnetlink_queue: fix secctx memory leak Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 53/78] ARM: dma-mapping: disallow dma_get_sgtable() for non-kernel managed memory Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 54/78] cpuidle: powernv: Pass correct drv->cpumask for registration Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 55/78] bnxt_en: Fix NULL pointer dereference in reopen failure path Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 56/78] backlight: pwm_bl: Fix overflow condition Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 57/78] crypto: crypto4xx - increase context and scatter ring buffer elements Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 58/78] rtc: pl031: make interrupt optional Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 59/78] net: phy: at803x: Change error to EINVAL for invalid MAC Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 60/78] PCI: Avoid bus reset if bridge itself is broken Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 61/78] scsi: cxgb4i: fix Tx skb leak Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 62/78] scsi: mpt3sas: Fix IO error occurs on pulling out a drive from RAID1 volume created on two SATA drive Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 63/78] PCI: Create SR-IOV virtfn/physfn links before attaching driver Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 64/78] igb: check memory allocation failure Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 65/78] ixgbe: fix use of uninitialized padding Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 66/78] PCI/AER: Report non-fatal errors only to the affected endpoint Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 67/78] scsi: lpfc: Fix secure firmware updates Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 68/78] scsi: lpfc: PLOGI failures during NPIV testing Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 69/78] fm10k: ensure we process SM mbx when processing VF mbx Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 70/78] tcp: fix under-evaluated ssthresh in TCP Vegas Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 71/78] rtc: set the alarm to the next expiring timer Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 72/78] cpuidle: fix broadcast control when broadcast can not be entered Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 73/78] thermal: hisilicon: Handle return value of clk_prepare_enable Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 74/78] MIPS: math-emu: Fix final emulation phase for certain instructions Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 75/78] Revert "Bluetooth: btusb: driver to enable the usb-wakeup feature" Greg Kroah-Hartman
2017-12-22 17:32 ` Brian Norris
2017-12-23 9:16 ` Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 76/78] ALSA: hda - Clear the leftover component assignment at snd_hdac_i915_exit() Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 77/78] ALSA: hda - Degrade i915 binding failure message Greg Kroah-Hartman
2017-12-22 8:46 ` [PATCH 4.4 78/78] ALSA: hda - Fix yet another i915 pointer leftover in error path Greg Kroah-Hartman
2017-12-22 15:48 ` [PATCH 4.4 00/78] 4.4.108-stable review Nathan Chancellor
2017-12-22 15:58 ` Greg Kroah-Hartman
2017-12-22 17:24 ` Naresh Kamboju
2017-12-23 9:17 ` Greg Kroah-Hartman
2017-12-22 18:18 ` Guenter Roeck
2017-12-23 9:19 ` Greg Kroah-Hartman
2017-12-23 14:46 ` Greg Kroah-Hartman
2017-12-23 16:13 ` Guenter Roeck
2017-12-23 16:26 ` Greg Kroah-Hartman
2017-12-23 17:11 ` Guenter Roeck
2017-12-23 21:20 ` Guenter Roeck
2017-12-22 21:11 ` Shuah Khan
2017-12-24 1:30 ` Guenter Roeck
2017-12-24 7:43 ` Greg Kroah-Hartman
2017-12-24 16:52 ` Guenter Roeck
2017-12-25 13:35 ` Greg Kroah-Hartman
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=20171222084559.235861442@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=alexander.levin@verizon.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rafael.j.wysocki@intel.com \
--cc=stable@vger.kernel.org \
--cc=svaidy@linux.vnet.ibm.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.