pinctrl: samsung: don't truncate the last char of "-grp"
Subsystems (5)
PATCH 1/1 pinctrl: samsung: don't truncate the last char of "-grp"
We allocate sizeof("-grp") which is 5 bytes but then we pass 4 to the snprintf() so the last 'p' char is truncated away.
The kzalloc() can be made into kmalloc() since we are going to fill the whole buffer. But I know that Walter Harms is going to grumble if I don't use kasprintf(). :P And also checkpatch.pl these days complains that the "allocation failed" printks aren't needed so I removed them.
drivers/pinctrl/samsung/pinctrl-exynos5440.c +5 -12
@@ -215,12 +215,9 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,* Allocate memory for pin group name. The pin group name is derived * from the node name from which these map entries are be created. */ - gname =kzalloc (strlen (np->name) +GSUFFIX_LEN ,GFP_KERNEL ); -if (!gname) { -dev_err (dev,"failed to alloc memory for group name\n" ); + gname =kasprintf (GFP_KERNEL ,"%s%s" , np->name,GROUP_SUFFIX ); +if (!gname) goto free_map; - } -snprintf (gname,strlen (np->name) +4 ,"%s%s" , np->name,GROUP_SUFFIX );/* * don't have config options? then skip over to creating function
@@ -710,14 +707,10 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev, }/* derive pin group name from the node name */ - gname =devm_kzalloc (dev,strlen (cfg_np->name) +GSUFFIX_LEN , -GFP_KERNEL ); -if (!gname) { -dev_err (dev,"failed to alloc memory for group name\n" ); + gname =devm_kasprintf (dev,GFP_KERNEL , +"%s%s" , cfg_np->name,GROUP_SUFFIX ); +if (!gname)return -ENOMEM ; - } -snprintf (gname,strlen (cfg_np->name) +4 ,"%s%s" , cfg_np->name, -GROUP_SUFFIX ); grp->name = gname; grp->pins = pin_list;
2015-06-12 0:46 GMT+09:00 Dan Carpenter <[email protected]>:
Quoted 16 lines
We allocate
sizeof("-grp")which is 5 bytes but then we pass 4 to thesnprintf()so the last 'p' char is truncated away.The
kzalloc()can be made intokmalloc()since we are going to fill the whole buffer. But I know that Walter Harms is going to grumble if I don't usekasprintf(). :P And also checkpatch.pl these days complains that the "allocation failed" printks aren't needed so I removed them.Signed-off-by Dan Carpenter <[email protected]>drivers/pinctrl/samsung/pinctrl-exynos5440.c +0
-0@@ -215,12 +215,9 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,* Allocate memory for pin group name. The pin group name is derived
drivers/pinctrl/samsung/pinctrl-exynos5440.c static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev, · line 223
Quoted 10 lines
drivers/pinctrl/samsung/pinctrl-exynos5440.c +2
-5* from the node name from which these map entries are be created. */ - gname =kzalloc (strlen (np->name) +GSUFFIX_LEN ,GFP_KERNEL ); -if (!gname) { -dev_err (dev,"failed to alloc memory for group name\n" ); + gname =kasprintf (GFP_KERNEL ,"%s%s" , np->name,GROUP_SUFFIX ); +if (!gname) goto free_map; - } -snprintf (gname,strlen (np->name) +4 ,"%s%s" , np->name,GROUP_SUFFIX );
I would prefer splitting this into two patches: one for fixing truncated name (by usage of kasprintf) and second for ENOMEM message. The second patch can get rid of ENOMEM message in other places as well.
As for the first issue I think that function suffix would also be truncated in the same way.
Best regards,
Krzysztof
Quoted 7 lines · Krzysztof Kozlowski
I would prefer splitting this into two patches: one for fixing truncated name (by usage of kasprintf) and second for ENOMEM message. The second patch can get rid of ENOMEM message in other places as well.
As for the first issue I think that function suffix would also be truncated in the same way.
Sorry for the delayed response, I've been offline for a few days.
Yeah, you're right.
Let me resend.
regards,
dan carpenter
PATCH v2 1/2 pinctrl: samsung: don't truncate the last char
We were allocating enough space because sizeof("-grp") and sizeof("-mux") are both equal to 5 but in the snprintf() we only allowed for 4 characters so the last 'p' and 'x' characters were truncated.
The allocate and sprintf can be done in one step with the kasprintf().
drivers/pinctrl/samsung/pinctrl-exynos5440.c +7 -15
@@ -44,9 +44,7 @@#define PIN_NAME_LENGTH 10#define GROUP_SUFFIX "-grp" -#define GSUFFIX_LEN sizeof(GROUP_SUFFIX)#define FUNCTION_SUFFIX "-mux" -#define FSUFFIX_LEN sizeof(FUNCTION_SUFFIX)/* * pin configuration type and its value are packed together into a 16-bits.
@@ -215,12 +213,11 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,* Allocate memory for pin group name. The pin group name is derived * from the node name from which these map entries are be created. */ - gname =kzalloc (strlen (np->name) +GSUFFIX_LEN ,GFP_KERNEL ); + gname =kasprintf (GFP_KERNEL ,"%s%s" , np->name,GROUP_SUFFIX );if (!gname) {dev_err (dev,"failed to alloc memory for group name\n" ); goto free_map; } -snprintf (gname,strlen (np->name) +4 ,"%s%s" , np->name,GROUP_SUFFIX );/* * don't have config options? then skip over to creating function
@@ -254,13 +251,12 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev, skip_cfgs:/* create the function map entry */ if (of_find_property (np,"samsung,exynos5440-pin-function" ,NULL )) { - fname =kzalloc (strlen (np->name) +FSUFFIX_LEN ,GFP_KERNEL ); + fname =kasprintf (GFP_KERNEL , +"%s%s" , np->name,FUNCTION_SUFFIX );if (!fname) {dev_err (dev,"failed to alloc memory for func name\n" ); goto free_cfg; } -snprintf (fname,strlen (np->name) +4 ,"%s%s" , np->name, -FUNCTION_SUFFIX ); map[*nmaps].data.mux.group = gname; map[*nmaps].data.mux.function = fname;
@@ -710,14 +706,12 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev, }/* derive pin group name from the node name */ - gname =devm_kzalloc (dev,strlen (cfg_np->name) +GSUFFIX_LEN , -GFP_KERNEL ); + gname =devm_kasprintf (dev,GFP_KERNEL , +"%s%s" , cfg_np->name,GROUP_SUFFIX );if (!gname) {dev_err (dev,"failed to alloc memory for group name\n" );return -ENOMEM ; } -snprintf (gname,strlen (cfg_np->name) +4 ,"%s%s" , cfg_np->name, -GROUP_SUFFIX ); grp->name = gname; grp->pins = pin_list;
@@ -731,14 +725,12 @@ skip_to_pin_function:continue ;/* derive function name from the node name */ - fname =devm_kzalloc (dev,strlen (cfg_np->name) +FSUFFIX_LEN , -GFP_KERNEL ); + fname =devm_kasprintf (dev,GFP_KERNEL , +"%s%s" , cfg_np->name,FUNCTION_SUFFIX );if (!fname) {dev_err (dev,"failed to alloc memory for func name\n" );return -ENOMEM ; } -snprintf (fname,strlen (cfg_np->name) +4 ,"%s%s" , cfg_np->name, -FUNCTION_SUFFIX ); func->name = fname; func->groups =devm_kzalloc (dev,sizeof (char *),GFP_KERNEL );
--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
Re: [patch v2 1/2] pinctrl: samsung: don't truncate the last char
Quoted 7 lines · Dan Carpenter
We were allocating enough space because
sizeof("-grp")andsizeof("-mux")are both equal to 5 but in thesnprintf()we only allowed for 4 characters so the last 'p' and 'x' characters were truncated.The allocate and sprintf can be done in one step with the
kasprintf().Signed-off-by Dan Carpenter <[email protected]>
Looks good:
Best regards,
Krzysztof
Quoted 70 lines
drivers/pinctrl/samsung/pinctrl-exynos5440.c +6
-13@@ -44,9 +44,7 @@#define PIN_NAME_LENGTH 10#define GROUP_SUFFIX "-grp" -#define GSUFFIX_LEN sizeof(GROUP_SUFFIX)#define FUNCTION_SUFFIX "-mux" -#define FSUFFIX_LEN sizeof(FUNCTION_SUFFIX)/* * pin configuration type and its value are packed together into a 16-bits. @@ -215,12 +213,11 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,* Allocate memory for pin group name. The pin group name is derived * from the node name from which these map entries are be created. */ - gname =kzalloc (strlen (np->name) +GSUFFIX_LEN ,GFP_KERNEL ); + gname =kasprintf (GFP_KERNEL ,"%s%s" , np->name,GROUP_SUFFIX );if (!gname) {dev_err (dev,"failed to alloc memory for group name\n" ); goto free_map; } -snprintf (gname,strlen (np->name) +4 ,"%s%s" , np->name,GROUP_SUFFIX );/* * don't have config options? then skip over to creating function @@ -254,13 +251,12 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev, skip_cfgs:/* create the function map entry */ if (of_find_property (np,"samsung,exynos5440-pin-function" ,NULL )) { - fname =kzalloc (strlen (np->name) +FSUFFIX_LEN ,GFP_KERNEL ); + fname =kasprintf (GFP_KERNEL , +"%s%s" , np->name,FUNCTION_SUFFIX );if (!fname) {dev_err (dev,"failed to alloc memory for func name\n" ); goto free_cfg; } -snprintf (fname,strlen (np->name) +4 ,"%s%s" , np->name, -FUNCTION_SUFFIX ); map[*nmaps].data.mux.group = gname; map[*nmaps].data.mux.function = fname;@@ -710,14 +706,12 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev, }/* derive pin group name from the node name */ - gname =devm_kzalloc (dev,strlen (cfg_np->name) +GSUFFIX_LEN , -GFP_KERNEL ); + gname =devm_kasprintf (dev,GFP_KERNEL , +"%s%s" , cfg_np->name,GROUP_SUFFIX );if (!gname) {dev_err (dev,"failed to alloc memory for group name\n" );return -ENOMEM ; } -snprintf (gname,strlen (cfg_np->name) +4 ,"%s%s" , cfg_np->name, -GROUP_SUFFIX ); grp->name = gname; grp->pins = pin_list;@@ -731,14 +725,12 @@ skip_to_pin_function:continue ;/* derive function name from the node name */ - fname =devm_kzalloc (dev,strlen (cfg_np->name) +FSUFFIX_LEN , -GFP_KERNEL ); + fname = devm_kasprintf(dev, GFP_KERNEL,
drivers/pinctrl/samsung/pinctrl-exynos5440.c skip_to_pin_function: · line 736
Quoted 10 lines
drivers/pinctrl/samsung/pinctrl-exynos5440.c +1
-2+ "%s%s", cfg_np->name, FUNCTION_SUFFIX);if (!fname) {dev_err (dev,"failed to alloc memory for func name\n" );return -ENOMEM ; } -snprintf (fname,strlen (cfg_np->name) +4 ,"%s%s" , cfg_np->name, -FUNCTION_SUFFIX ); func->name = fname; func->groups =devm_kzalloc (dev,sizeof (char *),GFP_KERNEL );
--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
Re: [patch v2 1/2] pinctrl: samsung: don't truncate the last char
In reply to Dan CarpenterQuoted 7 lines · Dan Carpenter
We were allocating enough space because
sizeof("-grp")andsizeof("-mux")are both equal to 5 but in thesnprintf()we only allowed for 4 characters so the last 'p' and 'x' characters were truncated.The allocate and sprintf can be done in one step with the
kasprintf().Signed-off-by Dan Carpenter <[email protected]>
Patch applied with Krzysztof's review tag.
Yours,
Linus Walleij
PATCH v2 2/2 pinctrl: samsung: remove "out of memory" messages
In reply to Dan CarpenterCheckpatch.pl complains about these:
WARNING: Possible unnecessary 'out of memory' message
The messages use a little extra RAM and they add a few extra lines of code. We're probably never going to hit these out of memory situations but if we did then kmalloc() has pretty good error messages built-in.
drivers/pinctrl/samsung/pinctrl-exynos5440.c +18 -49
@@ -203,10 +203,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,/* Allocate memory for pin-map entries */ map =kzalloc (sizeof (*map) * map_cnt,GFP_KERNEL ); -if (!map) { -dev_err (dev,"could not alloc memory for pin-maps\n" ); +if (!map)return -ENOMEM ; - } *nmaps =0 ;/*
@@ -214,10 +212,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,* from the node name from which these map entries are be created. */ gname =kasprintf (GFP_KERNEL ,"%s%s" , np->name,GROUP_SUFFIX ); -if (!gname) { -dev_err (dev,"failed to alloc memory for group name\n" ); +if (!gname) goto free_map; - }/* * don't have config options? then skip over to creating function
@@ -228,10 +224,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,/* Allocate memory for config entries */ cfg =kzalloc (sizeof (*cfg) * cfg_cnt,GFP_KERNEL ); -if (!cfg) { -dev_err (dev,"failed to alloc memory for configs\n" ); +if (!cfg) goto free_gname; - }/* Prepare a list of config settings */ for (idx =0 , cfg_cnt =0 ; idx <ARRAY_SIZE (pcfgs); idx++) {
@@ -253,10 +247,8 @@ skip_cfgs:if (of_find_property (np,"samsung,exynos5440-pin-function" ,NULL )) { fname =kasprintf (GFP_KERNEL ,"%s%s" , np->name,FUNCTION_SUFFIX ); -if (!fname) { -dev_err (dev,"failed to alloc memory for func name\n" ); +if (!fname) goto free_cfg; - } map[*nmaps].data.mux.group = gname; map[*nmaps].data.mux.function = fname;
@@ -647,10 +639,8 @@ static int exynos5440_pinctrl_parse_dt_pins(struct platform_device *pdev, } *pin_list =devm_kzalloc (dev, *npins *sizeof (**pin_list),GFP_KERNEL ); -if (!*pin_list) { -dev_err (dev,"failed to allocate memory for pin list\n" ); +if (!*pin_list)return -ENOMEM ; - }return of_property_read_u32_array (cfg_np,"samsung,exynos5440-pins" , *pin_list, *npins);
@@ -678,17 +668,15 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,return -EINVAL ; groups =devm_kzalloc (dev, grp_cnt *sizeof (*groups),GFP_KERNEL ); -if (!groups) { -dev_err (dev,"failed allocate memory for ping group list\n" ); +if (!groups)return -EINVAL ; - } + grp = groups; functions =devm_kzalloc (dev, grp_cnt *sizeof (*functions),GFP_KERNEL ); -if (!functions) { -dev_err (dev,"failed to allocate memory for function list\n" ); +if (!functions)return -EINVAL ; - } + func = functions;/*
@@ -708,10 +696,8 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,/* derive pin group name from the node name */ gname =devm_kasprintf (dev,GFP_KERNEL ,"%s%s" , cfg_np->name,GROUP_SUFFIX ); -if (!gname) { -dev_err (dev,"failed to alloc memory for group name\n" ); +if (!gname)return -ENOMEM ; - } grp->name = gname; grp->pins = pin_list;
@@ -727,18 +713,13 @@ skip_to_pin_function:/* derive function name from the node name */ fname =devm_kasprintf (dev,GFP_KERNEL ,"%s%s" , cfg_np->name,FUNCTION_SUFFIX ); -if (!fname) { -dev_err (dev,"failed to alloc memory for func name\n" ); +if (!fname)return -ENOMEM ; - } func->name = fname; func->groups =devm_kzalloc (dev,sizeof (char *),GFP_KERNEL ); -if (!func->groups) { -dev_err (dev,"failed to alloc memory for group list " -"in pin function" ); +if (!func->groups)return -ENOMEM ; - } func->groups[0 ] = gname; func->num_groups = gname ?1 :0 ; func->function = function;
@@ -766,10 +747,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,int pin, ret; ctrldesc =devm_kzalloc (dev,sizeof (*ctrldesc),GFP_KERNEL ); -if (!ctrldesc) { -dev_err (dev,"could not allocate memory for pinctrl desc\n" ); +if (!ctrldesc)return -ENOMEM ; - } ctrldesc->name ="exynos5440-pinctrl" ; ctrldesc->owner =THIS_MODULE ;
@@ -779,10 +758,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev, pindesc =devm_kzalloc (&pdev->dev,sizeof (*pindesc) *EXYNOS5440_MAX_PINS ,GFP_KERNEL ); -if (!pindesc) { -dev_err (&pdev->dev,"mem alloc for pin descriptors failed\n" ); +if (!pindesc)return -ENOMEM ; - } ctrldesc->pins = pindesc; ctrldesc->npins =EXYNOS5440_MAX_PINS ;
@@ -796,10 +773,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,*/ pin_names =devm_kzalloc (&pdev->dev,sizeof (char ) *PIN_NAME_LENGTH * ctrldesc->npins,GFP_KERNEL ); -if (!pin_names) { -dev_err (&pdev->dev,"mem alloc for pin names failed\n" ); +if (!pin_names)return -ENOMEM ; - }/* for each pin, set the name of the pin */ for (pin =0 ; pin < ctrldesc->npins; pin++) {
@@ -836,10 +811,8 @@ static int exynos5440_gpiolib_register(struct platform_device *pdev,int ret; gc =devm_kzalloc (&pdev->dev,sizeof (*gc),GFP_KERNEL ); -if (!gc) { -dev_err (&pdev->dev,"mem alloc for gpio_chip failed\n" ); +if (!gc)return -ENOMEM ; - } priv->gc = gc; gc->base =0 ;
@@ -941,10 +914,8 @@ static int exynos5440_gpio_irq_init(struct platform_device *pdev, intd =devm_kzalloc (dev,sizeof (*intd) *EXYNOS5440_MAX_GPIO_INT ,GFP_KERNEL ); -if (!intd) { -dev_err (dev,"failed to allocate memory for gpio intr data\n" ); +if (!intd)return -ENOMEM ; - }for (i =0 ; i <EXYNOS5440_MAX_GPIO_INT ; i++) { irq =irq_of_parse_and_map (dev->of_node, i);
@@ -987,10 +958,8 @@ static int exynos5440_pinctrl_probe(struct platform_device *pdev) } priv =devm_kzalloc (dev,sizeof (*priv),GFP_KERNEL ); -if (!priv) { -dev_err (dev,"could not allocate memory for private data\n" ); +if (!priv)return -ENOMEM ; - } res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); priv->reg_base =devm_ioremap_resource (&pdev->dev, res);
--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
Re: [patch v2 2/2] pinctrl: samsung: remove "out of memory" messages
Quoted 9 lines · Dan Carpenter
Checkpatch.pl complains about these:
WARNING: Possible unnecessary 'out of memory' message
The messages use a little extra RAM and they add a few extra lines of code. We're probably never going to hit these out of memory situations but if we did then
kmalloc()has pretty good error messages built-in.Signed-off-by Dan Carpenter <[email protected]>
Looks good:
Best regards,
Krzysztof
Quoted 183 lines
drivers/pinctrl/samsung/pinctrl-exynos5440.c +17
-46@@ -203,10 +203,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,/* Allocate memory for pin-map entries */ map =kzalloc (sizeof (*map) * map_cnt,GFP_KERNEL ); -if (!map) { -dev_err (dev,"could not alloc memory for pin-maps\n" ); +if (!map)return -ENOMEM ; - } *nmaps =0 ;/* @@ -214,10 +212,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,* from the node name from which these map entries are be created. */ gname =kasprintf (GFP_KERNEL ,"%s%s" , np->name,GROUP_SUFFIX ); -if (!gname) { -dev_err (dev,"failed to alloc memory for group name\n" ); +if (!gname) goto free_map; - }/* * don't have config options? then skip over to creating function @@ -228,10 +224,8 @@ static int exynos5440_dt_node_to_map(struct pinctrl_dev *pctldev,/* Allocate memory for config entries */ cfg =kzalloc (sizeof (*cfg) * cfg_cnt,GFP_KERNEL ); -if (!cfg) { -dev_err (dev,"failed to alloc memory for configs\n" ); +if (!cfg) goto free_gname; - }/* Prepare a list of config settings */ for (idx =0 , cfg_cnt =0 ; idx <ARRAY_SIZE (pcfgs); idx++) {@@ -253,10 +247,8 @@ skip_cfgs:if (of_find_property (np,"samsung,exynos5440-pin-function" ,NULL )) { fname =kasprintf (GFP_KERNEL ,"%s%s" , np->name,FUNCTION_SUFFIX ); -if (!fname) { -dev_err (dev,"failed to alloc memory for func name\n" ); +if (!fname) goto free_cfg; - } map[*nmaps].data.mux.group = gname; map[*nmaps].data.mux.function = fname;@@ -647,10 +639,8 @@ static int exynos5440_pinctrl_parse_dt_pins(struct platform_device *pdev, } *pin_list =devm_kzalloc (dev, *npins *sizeof (**pin_list),GFP_KERNEL ); -if (!*pin_list) { -dev_err (dev,"failed to allocate memory for pin list\n" ); +if (!*pin_list)return -ENOMEM ; - }return of_property_read_u32_array (cfg_np,"samsung,exynos5440-pins" , *pin_list, *npins);@@ -678,17 +668,15 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,return -EINVAL ; groups =devm_kzalloc (dev, grp_cnt *sizeof (*groups),GFP_KERNEL ); -if (!groups) { -dev_err (dev,"failed allocate memory for ping group list\n" ); +if (!groups)return -EINVAL ; - } + grp = groups; functions =devm_kzalloc (dev, grp_cnt *sizeof (*functions),GFP_KERNEL ); -if (!functions) { -dev_err (dev,"failed to allocate memory for function list\n" ); +if (!functions)return -EINVAL ; - } + func = functions;/* @@ -708,10 +696,8 @@ static int exynos5440_pinctrl_parse_dt(struct platform_device *pdev,/* derive pin group name from the node name */ gname =devm_kasprintf (dev,GFP_KERNEL ,"%s%s" , cfg_np->name,GROUP_SUFFIX ); -if (!gname) { -dev_err (dev,"failed to alloc memory for group name\n" ); +if (!gname)return -ENOMEM ; - } grp->name = gname; grp->pins = pin_list;@@ -727,18 +713,13 @@ skip_to_pin_function:/* derive function name from the node name */ fname =devm_kasprintf (dev,GFP_KERNEL ,"%s%s" , cfg_np->name,FUNCTION_SUFFIX ); -if (!fname) { -dev_err (dev,"failed to alloc memory for func name\n" ); +if (!fname)return -ENOMEM ; - } func->name = fname; func->groups =devm_kzalloc (dev,sizeof (char *),GFP_KERNEL ); -if (!func->groups) { -dev_err (dev,"failed to alloc memory for group list " -"in pin function" ); +if (!func->groups)return -ENOMEM ; - } func->groups[0 ] = gname; func->num_groups = gname ?1 :0 ; func->function = function;@@ -766,10 +747,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,int pin, ret; ctrldesc =devm_kzalloc (dev,sizeof (*ctrldesc),GFP_KERNEL ); -if (!ctrldesc) { -dev_err (dev,"could not allocate memory for pinctrl desc\n" ); +if (!ctrldesc)return -ENOMEM ; - } ctrldesc->name ="exynos5440-pinctrl" ; ctrldesc->owner =THIS_MODULE ;@@ -779,10 +758,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev, pindesc =devm_kzalloc (&pdev->dev,sizeof (*pindesc) *EXYNOS5440_MAX_PINS ,GFP_KERNEL ); -if (!pindesc) { -dev_err (&pdev->dev,"mem alloc for pin descriptors failed\n" ); +if (!pindesc)return -ENOMEM ; - } ctrldesc->pins = pindesc; ctrldesc->npins =EXYNOS5440_MAX_PINS ;@@ -796,10 +773,8 @@ static int exynos5440_pinctrl_register(struct platform_device *pdev,*/ pin_names =devm_kzalloc (&pdev->dev,sizeof (char ) *PIN_NAME_LENGTH * ctrldesc->npins,GFP_KERNEL ); -if (!pin_names) { -dev_err (&pdev->dev,"mem alloc for pin names failed\n" ); +if (!pin_names)return -ENOMEM ; - }/* for each pin, set the name of the pin */ for (pin =0 ; pin < ctrldesc->npins; pin++) {@@ -836,10 +811,8 @@ static int exynos5440_gpiolib_register(struct platform_device *pdev,int ret; gc =devm_kzalloc (&pdev->dev,sizeof (*gc),GFP_KERNEL ); -if (!gc) { -dev_err (&pdev->dev,"mem alloc for gpio_chip failed\n" ); +if (!gc)return -ENOMEM ; - } priv->gc = gc; gc->base =0 ;@@ -941,10 +914,8 @@ static int exynos5440_gpio_irq_init(struct platform_device *pdev, intd =devm_kzalloc (dev,sizeof (*intd) *EXYNOS5440_MAX_GPIO_INT ,GFP_KERNEL ); -if (!intd) { -dev_err (dev,"failed to allocate memory for gpio intr data\n" ); +if (!intd)return -ENOMEM ; - }for (i =0 ; i <EXYNOS5440_MAX_GPIO_INT ; i++) { irq =irq_of_parse_and_map (dev->of_node, i);@@ -987,10 +958,8 @@ static int exynos5440_pinctrl_probe(struct platform_device *pdev) }
drivers/pinctrl/samsung/pinctrl-exynos5440.c static int exynos5440_pinctrl_probe(struct platform_device *pdev) · line 965
Quoted 10 lines
drivers/pinctrl/samsung/pinctrl-exynos5440.c +1
-3priv =devm_kzalloc (dev,sizeof (*priv),GFP_KERNEL ); -if (!priv) { -dev_err (dev,"could not allocate memory for private data\n" ); +if (!priv)return -ENOMEM ; - } res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); priv->reg_base =devm_ioremap_resource (&pdev->dev, res);
--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
Re: [patch v2 2/2] pinctrl: samsung: remove "out of memory" messages
In reply to Dan CarpenterQuoted 9 lines · Dan Carpenter
Checkpatch.pl complains about these:
WARNING: Possible unnecessary 'out of memory' message
The messages use a little extra RAM and they add a few extra lines of code. We're probably never going to hit these out of memory situations but if we did then
kmalloc()has pretty good error messages built-in.Signed-off-by Dan Carpenter <[email protected]>
Patch applied with Krzysztof's review tag.
Yours,
Linus Walleij