Skip to content

Commit 3412320

Browse files
x2018tsbogend
authored andcommitted
MIPS: lantiq: check the return value of kzalloc()
kzalloc() is a memory allocation function which can return NULL when some internal memory errors happen. So it is better to check the return value of it to prevent potential wrong memory access or memory leak. Signed-off-by: Xiaoke Wang <[email protected]> Signed-off-by: Thomas Bogendoerfer <[email protected]>
1 parent f93e2a1 commit 3412320

File tree

3 files changed

+34
-16
lines changed

3 files changed

+34
-16
lines changed

arch/mips/lantiq/falcon/sysctrl.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,8 @@ static inline void clkdev_add_sys(const char *dev, unsigned int module,
167167
{
168168
struct clk *clk = kzalloc(sizeof(struct clk), GFP_KERNEL);
169169

170+
if (!clk)
171+
return;
170172
clk->cl.dev_id = dev;
171173
clk->cl.con_id = NULL;
172174
clk->cl.clk = clk;

arch/mips/lantiq/xway/gptu.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ static inline void clkdev_add_gptu(struct device *dev, const char *con,
122122
{
123123
struct clk *clk = kzalloc(sizeof(struct clk), GFP_KERNEL);
124124

125+
if (!clk)
126+
return;
125127
clk->cl.dev_id = dev_name(dev);
126128
clk->cl.con_id = con;
127129
clk->cl.clk = clk;

arch/mips/lantiq/xway/sysctrl.c

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,8 @@ static void clkdev_add_pmu(const char *dev, const char *con, bool deactivate,
315315
{
316316
struct clk *clk = kzalloc(sizeof(struct clk), GFP_KERNEL);
317317

318+
if (!clk)
319+
return;
318320
clk->cl.dev_id = dev;
319321
clk->cl.con_id = con;
320322
clk->cl.clk = clk;
@@ -338,6 +340,8 @@ static void clkdev_add_cgu(const char *dev, const char *con,
338340
{
339341
struct clk *clk = kzalloc(sizeof(struct clk), GFP_KERNEL);
340342

343+
if (!clk)
344+
return;
341345
clk->cl.dev_id = dev;
342346
clk->cl.con_id = con;
343347
clk->cl.clk = clk;
@@ -356,24 +360,28 @@ static void clkdev_add_pci(void)
356360
struct clk *clk_ext = kzalloc(sizeof(struct clk), GFP_KERNEL);
357361

358362
/* main pci clock */
359-
clk->cl.dev_id = "17000000.pci";
360-
clk->cl.con_id = NULL;
361-
clk->cl.clk = clk;
362-
clk->rate = CLOCK_33M;
363-
clk->rates = valid_pci_rates;
364-
clk->enable = pci_enable;
365-
clk->disable = pmu_disable;
366-
clk->module = 0;
367-
clk->bits = PMU_PCI;
368-
clkdev_add(&clk->cl);
363+
if (clk) {
364+
clk->cl.dev_id = "17000000.pci";
365+
clk->cl.con_id = NULL;
366+
clk->cl.clk = clk;
367+
clk->rate = CLOCK_33M;
368+
clk->rates = valid_pci_rates;
369+
clk->enable = pci_enable;
370+
clk->disable = pmu_disable;
371+
clk->module = 0;
372+
clk->bits = PMU_PCI;
373+
clkdev_add(&clk->cl);
374+
}
369375

370376
/* use internal/external bus clock */
371-
clk_ext->cl.dev_id = "17000000.pci";
372-
clk_ext->cl.con_id = "external";
373-
clk_ext->cl.clk = clk_ext;
374-
clk_ext->enable = pci_ext_enable;
375-
clk_ext->disable = pci_ext_disable;
376-
clkdev_add(&clk_ext->cl);
377+
if (clk_ext) {
378+
clk_ext->cl.dev_id = "17000000.pci";
379+
clk_ext->cl.con_id = "external";
380+
clk_ext->cl.clk = clk_ext;
381+
clk_ext->enable = pci_ext_enable;
382+
clk_ext->disable = pci_ext_disable;
383+
clkdev_add(&clk_ext->cl);
384+
}
377385
}
378386

379387
/* xway socs can generate clocks on gpio pins */
@@ -393,9 +401,15 @@ static void clkdev_add_clkout(void)
393401
char *name;
394402

395403
name = kzalloc(sizeof("clkout0"), GFP_KERNEL);
404+
if (!name)
405+
continue;
396406
sprintf(name, "clkout%d", i);
397407

398408
clk = kzalloc(sizeof(struct clk), GFP_KERNEL);
409+
if (!clk) {
410+
kfree(name);
411+
continue;
412+
}
399413
clk->cl.dev_id = "1f103000.cgu";
400414
clk->cl.con_id = name;
401415
clk->cl.clk = clk;

0 commit comments

Comments
 (0)