mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 17:43:52 +02:00
x86/hyperv: Fix error pointer dereference
The function idle_thread_get() can return an error pointer and is not
checked for it. Add check for error pointer.
Detected by Smatch:
arch/x86/hyperv/hv_vtl.c:126 hv_vtl_bringup_vcpu() error:
'idle' dereferencing possible ERR_PTR()
Fixes: 2b4b90e053 ("x86/hyperv: Use per cpu initial stack for vtl context")
Signed-off-by: Ethan Tidmore <ethantidmore06@gmail.com>
Signed-off-by: Wei Liu <wei.liu@kernel.org>
This commit is contained in:
parent
fe9f15983c
commit
705d01c8d7
|
|
@ -110,7 +110,7 @@ static void hv_vtl_ap_entry(void)
|
|||
|
||||
static int hv_vtl_bringup_vcpu(u32 target_vp_index, int cpu, u64 eip_ignored)
|
||||
{
|
||||
u64 status;
|
||||
u64 status, rsp, rip;
|
||||
int ret = 0;
|
||||
struct hv_enable_vp_vtl *input;
|
||||
unsigned long irq_flags;
|
||||
|
|
@ -123,9 +123,11 @@ static int hv_vtl_bringup_vcpu(u32 target_vp_index, int cpu, u64 eip_ignored)
|
|||
struct desc_struct *gdt;
|
||||
|
||||
struct task_struct *idle = idle_thread_get(cpu);
|
||||
u64 rsp = (unsigned long)idle->thread.sp;
|
||||
if (IS_ERR(idle))
|
||||
return PTR_ERR(idle);
|
||||
|
||||
u64 rip = (u64)&hv_vtl_ap_entry;
|
||||
rsp = (unsigned long)idle->thread.sp;
|
||||
rip = (u64)&hv_vtl_ap_entry;
|
||||
|
||||
native_store_gdt(&gdt_ptr);
|
||||
store_idt(&idt_ptr);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user