Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

hwrng: bcm63xx - use devm_* helpers

Simplify the driver's probe function and error handling by using the
device managed allocators, while at it, drop the redundant "out of
memory" messages since these are already printed by the allocator.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

authored by

Florian Fainelli and committed by
Herbert Xu
0052a654 aeb9624f

+6 -14
+6 -14
drivers/char/hw_random/bcm63xx-rng.c
··· 83 83 goto out; 84 84 } 85 85 86 - priv = kzalloc(sizeof(*priv), GFP_KERNEL); 86 + priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); 87 87 if (!priv) { 88 - dev_err(&pdev->dev, "no memory for private structure\n"); 89 88 ret = -ENOMEM; 90 89 goto out; 91 90 } 92 91 93 - rng = kzalloc(sizeof(*rng), GFP_KERNEL); 92 + rng = devm_kzalloc(&pdev->dev, sizeof(*rng), GFP_KERNEL); 94 93 if (!rng) { 95 - dev_err(&pdev->dev, "no memory for rng structure\n"); 96 94 ret = -ENOMEM; 97 - goto out_free_priv; 95 + goto out; 98 96 } 99 97 100 98 platform_set_drvdata(pdev, rng); ··· 107 109 if (IS_ERR(clk)) { 108 110 dev_err(&pdev->dev, "no clock for device\n"); 109 111 ret = PTR_ERR(clk); 110 - goto out_free_rng; 112 + goto out; 111 113 } 112 114 113 115 priv->clk = clk; ··· 116 118 resource_size(r), pdev->name)) { 117 119 dev_err(&pdev->dev, "request mem failed"); 118 120 ret = -ENOMEM; 119 - goto out_free_rng; 121 + goto out; 120 122 } 121 123 122 124 priv->regs = devm_ioremap_nocache(&pdev->dev, r->start, ··· 124 126 if (!priv->regs) { 125 127 dev_err(&pdev->dev, "ioremap failed"); 126 128 ret = -ENOMEM; 127 - goto out_free_rng; 129 + goto out; 128 130 } 129 131 130 132 clk_enable(clk); ··· 141 143 142 144 out_clk_disable: 143 145 clk_disable(clk); 144 - out_free_rng: 145 - kfree(rng); 146 - out_free_priv: 147 - kfree(priv); 148 146 out: 149 147 return ret; 150 148 } ··· 152 158 153 159 hwrng_unregister(rng); 154 160 clk_disable(priv->clk); 155 - kfree(priv); 156 - kfree(rng); 157 161 158 162 return 0; 159 163 }