Skip to content

Commit 3693bb4

Browse files
KunWuChanjgross1
authored andcommitted
x86/xen: Add some null pointer checking to smp.c
kasprintf() returns a pointer to dynamically allocated memory which can be NULL upon failure. Ensure the allocation was successful by checking the pointer validity. Signed-off-by: Kunwu Chan <chentao@kylinos.cn> Reported-by: kernel test robot <lkp@intel.com> Closes: https://lore.kernel.org/oe-kbuild-all/202401161119.iof6BQsf-lkp@intel.com/ Suggested-by: Markus Elfring <Markus.Elfring@web.de> Reviewed-by: Juergen Gross <jgross@suse.com> Link: https://lore.kernel.org/r/20240119094948.275390-1-chentao@kylinos.cn Signed-off-by: Juergen Gross <jgross@suse.com>
1 parent 7d8c67d commit 3693bb4

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

arch/x86/xen/smp.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ int xen_smp_intr_init(unsigned int cpu)
6565
char *resched_name, *callfunc_name, *debug_name;
6666

6767
resched_name = kasprintf(GFP_KERNEL, "resched%d", cpu);
68+
if (!resched_name)
69+
goto fail_mem;
6870
per_cpu(xen_resched_irq, cpu).name = resched_name;
6971
rc = bind_ipi_to_irqhandler(XEN_RESCHEDULE_VECTOR,
7072
cpu,
@@ -77,6 +79,8 @@ int xen_smp_intr_init(unsigned int cpu)
7779
per_cpu(xen_resched_irq, cpu).irq = rc;
7880

7981
callfunc_name = kasprintf(GFP_KERNEL, "callfunc%d", cpu);
82+
if (!callfunc_name)
83+
goto fail_mem;
8084
per_cpu(xen_callfunc_irq, cpu).name = callfunc_name;
8185
rc = bind_ipi_to_irqhandler(XEN_CALL_FUNCTION_VECTOR,
8286
cpu,
@@ -90,6 +94,9 @@ int xen_smp_intr_init(unsigned int cpu)
9094

9195
if (!xen_fifo_events) {
9296
debug_name = kasprintf(GFP_KERNEL, "debug%d", cpu);
97+
if (!debug_name)
98+
goto fail_mem;
99+
93100
per_cpu(xen_debug_irq, cpu).name = debug_name;
94101
rc = bind_virq_to_irqhandler(VIRQ_DEBUG, cpu,
95102
xen_debug_interrupt,
@@ -101,6 +108,9 @@ int xen_smp_intr_init(unsigned int cpu)
101108
}
102109

103110
callfunc_name = kasprintf(GFP_KERNEL, "callfuncsingle%d", cpu);
111+
if (!callfunc_name)
112+
goto fail_mem;
113+
104114
per_cpu(xen_callfuncsingle_irq, cpu).name = callfunc_name;
105115
rc = bind_ipi_to_irqhandler(XEN_CALL_FUNCTION_SINGLE_VECTOR,
106116
cpu,
@@ -114,6 +124,8 @@ int xen_smp_intr_init(unsigned int cpu)
114124

115125
return 0;
116126

127+
fail_mem:
128+
rc = -ENOMEM;
117129
fail:
118130
xen_smp_intr_free(cpu);
119131
return rc;

0 commit comments

Comments
 (0)