Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1623779 > unrolled thread
| Started by | SF Markus Elfring <elfring@users.sourceforge.net> |
|---|---|
| First post | 2017-04-14 19:00 +0200 |
| Last post | 2017-04-21 21:30 +0200 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH] pinctrl-armada-xp: Use devm_kmalloc_array() in armada_xp_pinctrl_probe() SF Markus Elfring <elfring@users.sourceforge.net> - 2017-04-14 19:00 +0200
Re: [PATCH] pinctrl-armada-xp: Use devm_kmalloc_array() in armada_xp_pinctrl_probe() Chris Packham <Chris.Packham@alliedtelesis.co.nz> - 2017-04-21 21:30 +0200
| From | SF Markus Elfring <elfring@users.sourceforge.net> |
|---|---|
| Date | 2017-04-14 19:00 +0200 |
| Subject | [PATCH] pinctrl-armada-xp: Use devm_kmalloc_array() in armada_xp_pinctrl_probe() |
| Message-ID | <twcJI-3tb-15@gated-at.bofh.it> |
From: Markus Elfring <elfring@users.sourceforge.net> Date: Fri, 14 Apr 2017 18:48:15 +0200 * A multiplication for the size determination of a memory allocation indicated that an array data structure should be processed. Thus use the corresponding function "devm_kmalloc_array". This issue was detected by using the Coccinelle software. * Replace the specification of a data type by a pointer dereference to make the corresponding size determination a bit safer according to the Linux coding style convention. * Delete the local variable "nregs" which became unnecessary with this refactoring. Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> --- drivers/pinctrl/mvebu/pinctrl-armada-xp.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-xp.c b/drivers/pinctrl/mvebu/pinctrl-armada-xp.c index b854f1ee5de5..457c54c8fed3 100644 --- a/drivers/pinctrl/mvebu/pinctrl-armada-xp.c +++ b/drivers/pinctrl/mvebu/pinctrl-armada-xp.c @@ -574,7 +574,6 @@ static int armada_xp_pinctrl_probe(struct platform_device *pdev) struct mvebu_pinctrl_soc_info *soc = &armada_xp_pinctrl_info; const struct of_device_id *match = of_match_device(armada_xp_pinctrl_of_match, &pdev->dev); - int nregs; if (!match) return -ENODEV; @@ -628,10 +627,11 @@ static int armada_xp_pinctrl_probe(struct platform_device *pdev) break; } - nregs = DIV_ROUND_UP(soc->nmodes, MVEBU_MPPS_PER_REG); - - mpp_saved_regs = devm_kmalloc(&pdev->dev, nregs * sizeof(u32), - GFP_KERNEL); + mpp_saved_regs = devm_kmalloc_array(&pdev->dev, + DIV_ROUND_UP(soc->nmodes, + MVEBU_MPPS_PER_REG), + sizeof(*mpp_saved_regs), + GFP_KERNEL); if (!mpp_saved_regs) return -ENOMEM; -- 2.12.2
[toc] | [next] | [standalone]
| From | Chris Packham <Chris.Packham@alliedtelesis.co.nz> |
|---|---|
| Date | 2017-04-21 21:30 +0200 |
| Message-ID | <tyMpI-1h4-15@gated-at.bofh.it> |
| In reply to | #1623779 |
Hi Markus, On 15/04/17 05:04, SF Markus Elfring wrote: > From: Markus Elfring <elfring@users.sourceforge.net> > Date: Fri, 14 Apr 2017 18:48:15 +0200 > > * A multiplication for the size determination of a memory allocation > indicated that an array data structure should be processed. > Thus use the corresponding function "devm_kmalloc_array". > > This issue was detected by using the Coccinelle software. > > * Replace the specification of a data type by a pointer dereference > to make the corresponding size determination a bit safer according to > the Linux coding style convention. > > * Delete the local variable "nregs" which became unnecessary with > this refactoring. > > Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> > --- > drivers/pinctrl/mvebu/pinctrl-armada-xp.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-xp.c b/drivers/pinctrl/mvebu/pinctrl-armada-xp.c > index b854f1ee5de5..457c54c8fed3 100644 > --- a/drivers/pinctrl/mvebu/pinctrl-armada-xp.c > +++ b/drivers/pinctrl/mvebu/pinctrl-armada-xp.c > @@ -574,7 +574,6 @@ static int armada_xp_pinctrl_probe(struct platform_device *pdev) > struct mvebu_pinctrl_soc_info *soc = &armada_xp_pinctrl_info; > const struct of_device_id *match = > of_match_device(armada_xp_pinctrl_of_match, &pdev->dev); > - int nregs; > > if (!match) > return -ENODEV; > @@ -628,10 +627,11 @@ static int armada_xp_pinctrl_probe(struct platform_device *pdev) > break; > } > > - nregs = DIV_ROUND_UP(soc->nmodes, MVEBU_MPPS_PER_REG); > - > - mpp_saved_regs = devm_kmalloc(&pdev->dev, nregs * sizeof(u32), > - GFP_KERNEL); > + mpp_saved_regs = devm_kmalloc_array(&pdev->dev, > + DIV_ROUND_UP(soc->nmodes, > + MVEBU_MPPS_PER_REG), > + sizeof(*mpp_saved_regs), > + GFP_KERNEL); I personally think having nregs makes the code a bit more readable but that's just me. With or without a change Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz> > if (!mpp_saved_regs) > return -ENOMEM; > >
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web