forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
kernel/drivers/staging/mt7621-pinctrl/pinctrl-rt2880.c
....@@ -220,7 +220,7 @@
220220 /* allocate our function and group mapping index buffers */
221221 f = p->func = devm_kcalloc(p->dev,
222222 p->func_count,
223
- sizeof(struct rt2880_pmx_func),
223
+ sizeof(*p->func),
224224 GFP_KERNEL);
225225 gpio_func.groups = devm_kcalloc(p->dev, p->group_count, sizeof(int),
226226 GFP_KERNEL);
....@@ -267,6 +267,8 @@
267267 p->func[i]->pin_count,
268268 sizeof(int),
269269 GFP_KERNEL);
270
+ if (!p->func[i]->pins)
271
+ return -ENOMEM;
270272 for (j = 0; j < p->func[i]->pin_count; j++)
271273 p->func[i]->pins[j] = p->func[i]->pin_first + j;
272274
....@@ -350,7 +352,6 @@
350352 for_each_compatible_node(np, NULL, "ralink,rt2880-gpio") {
351353 const __be32 *ngpio, *gpiobase;
352354 struct pinctrl_gpio_range *range;
353
- char *name;
354355
355356 if (!of_device_is_available(np))
356357 continue;
....@@ -359,12 +360,16 @@
359360 gpiobase = of_get_property(np, "ralink,gpio-base", NULL);
360361 if (!ngpio || !gpiobase) {
361362 dev_err(&pdev->dev, "failed to load chip info\n");
363
+ of_node_put(np);
362364 return -EINVAL;
363365 }
364366
365
- range = devm_kzalloc(p->dev, sizeof(*range) + 4, GFP_KERNEL);
366
- range->name = name = (char *) &range[1];
367
- sprintf(name, "pio");
367
+ range = devm_kzalloc(p->dev, sizeof(*range), GFP_KERNEL);
368
+ if (!range) {
369
+ of_node_put(np);
370
+ return -ENOMEM;
371
+ }
372
+ range->name = "pio";
368373 range->npins = __be32_to_cpu(*ngpio);
369374 range->base = __be32_to_cpu(*gpiobase);
370375 range->pin_base = range->base;