Re: [PATCH] MIPS: Alchemy: add missing platform_set_drvdata() in au1550nd_probe()
On Tue, Nov 26, 2013 at 07:35:55PM -0800, Brian Norris wrote: > On Wed, Nov 27, 2013 at 09:14:18AM +0900, Jingoo Han wrote: > > On Wednesday, November 27, 2013 8:50 AM, Brian Norris wrote: > > > On Mon, Nov 11, 2013 at 02:18:29PM +0800, Wei Yongjun wrote: > > > > --- a/drivers/mtd/nand/au1550nd.c > > > > +++ b/drivers/mtd/nand/au1550nd.c > > > > @@ -480,6 +480,8 @@ static int au1550nd_probe(struct platform_device > > > > *pdev) > > > > > > > > mtd_device_register(>info, pd->parts, pd->num_parts); > > > > > > > > + platform_set_drvdata(pdev, ctx); > > > > + > > > > > > Personally, I'd choose to call platform_set_drvdata() earlier in the > > > probe routine (e.g., immediately after its allocation), in case we end > > > up calling platform_get_drvdata() from some sub-routine in the future. > > > > Do you mean the following? > > But, most drivers calls platform_set_drvdata() later in the probe routine. > > I wouldn't say "most." An unscientific survey seemed to show some > variation, with no clear pattern. I'm just pushing the original patch, since this isn't really a big issue. Pushed to l2-mtd.git. I reworked the $subject, since this isn't really about MIPS at all. Thanks Wei and Jingoo. Brian -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] MIPS: Alchemy: add missing platform_set_drvdata() in au1550nd_probe()
On Tue, Nov 26, 2013 at 07:35:55PM -0800, Brian Norris wrote: On Wed, Nov 27, 2013 at 09:14:18AM +0900, Jingoo Han wrote: On Wednesday, November 27, 2013 8:50 AM, Brian Norris wrote: On Mon, Nov 11, 2013 at 02:18:29PM +0800, Wei Yongjun wrote: --- a/drivers/mtd/nand/au1550nd.c +++ b/drivers/mtd/nand/au1550nd.c @@ -480,6 +480,8 @@ static int au1550nd_probe(struct platform_device *pdev) mtd_device_register(ctx-info, pd-parts, pd-num_parts); + platform_set_drvdata(pdev, ctx); + Personally, I'd choose to call platform_set_drvdata() earlier in the probe routine (e.g., immediately after its allocation), in case we end up calling platform_get_drvdata() from some sub-routine in the future. Do you mean the following? But, most drivers calls platform_set_drvdata() later in the probe routine. I wouldn't say most. An unscientific survey seemed to show some variation, with no clear pattern. I'm just pushing the original patch, since this isn't really a big issue. Pushed to l2-mtd.git. I reworked the $subject, since this isn't really about MIPS at all. Thanks Wei and Jingoo. Brian -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] MIPS: Alchemy: add missing platform_set_drvdata() in au1550nd_probe()
Hi Jingoo, On Wed, Nov 27, 2013 at 09:14:18AM +0900, Jingoo Han wrote: > On Wednesday, November 27, 2013 8:50 AM, Brian Norris wrote: > > On Mon, Nov 11, 2013 at 02:18:29PM +0800, Wei Yongjun wrote: > > > From: Wei Yongjun > > > > > > Add missing platform_set_drvdata() in au1550nd_probe(), otherwise > > > calling platform_get_drvdata() in remove returns NULL. > > > > An alternative solution: just allocate ctx with devm_kzalloc().Then you > > don't have to kfree() it at all. > > Even if devm_kzalloc() is used, missing platform_set_drvdata() will > be still necessary. > > static int au1550nd_remove(struct platform_device *pdev) > { > struct au1550nd_ctx *ctx = platform_get_drvdata(pdev); > . > > nand_release(>info); > > 'ctx' is still used. Also, in order to use 'ctx', > platform_get_drvdata(pdev) should be called. Ah, I overlooked that. Thanks. In that case, you still have to do something like this patch, and devm_kzalloc() can be left for another day (or not done at all). > > > > I don't mind one solution over the other too much. Let me know which > > you'd prefer. > > > > > Signed-off-by: Wei Yongjun > > > --- > > > drivers/mtd/nand/au1550nd.c | 2 ++ > > > 1 file changed, 2 insertions(+) > > > > > > diff --git a/drivers/mtd/nand/au1550nd.c b/drivers/mtd/nand/au1550nd.c > > > index ae8dd7c..909b673 100644 > > > --- a/drivers/mtd/nand/au1550nd.c > > > +++ b/drivers/mtd/nand/au1550nd.c > > > @@ -480,6 +480,8 @@ static int au1550nd_probe(struct platform_device > > > *pdev) > > > > > > mtd_device_register(>info, pd->parts, pd->num_parts); > > > > > > + platform_set_drvdata(pdev, ctx); > > > + > > > > Personally, I'd choose to call platform_set_drvdata() earlier in the > > probe routine (e.g., immediately after its allocation), in case we end > > up calling platform_get_drvdata() from some sub-routine in the future. > > Do you mean the following? > But, most drivers calls platform_set_drvdata() later in the probe routine. I wouldn't say "most." An unscientific survey seemed to show some variation, with no clear pattern. > static int au1550nd_probe(struct platform_device *pdev) > { > struct au1550nd_platdata *pd; > struct au1550nd_ctx *ctx; > struct nand_chip *this; > struct resource *r; > int ret, cs; > > pd = dev_get_platdata(>dev); > if (!pd) { > dev_err(>dev, "missing platform data\n"); > return -ENODEV; > } > > ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); > if (!ctx) { > dev_err(>dev, "no memory for NAND context\n"); > return -ENOMEM; > } > > + platform_set_drvdata(pdev, ctx); > + Yes, that looks better to me. Brian -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] MIPS: Alchemy: add missing platform_set_drvdata() in au1550nd_probe()
On Wednesday, November 27, 2013 8:50 AM, Brian Norris wrote: Hi Brian Norris, I added my questions as below. :-) > On Mon, Nov 11, 2013 at 02:18:29PM +0800, Wei Yongjun wrote: > > From: Wei Yongjun > > > > Add missing platform_set_drvdata() in au1550nd_probe(), otherwise > > calling platform_get_drvdata() in remove returns NULL. > > An alternative solution: just allocate ctx with devm_kzalloc().Then you > don't have to kfree() it at all. Even if devm_kzalloc() is used, missing platform_set_drvdata() will be still necessary. static int au1550nd_remove(struct platform_device *pdev) { struct au1550nd_ctx *ctx = platform_get_drvdata(pdev); . nand_release(>info); 'ctx' is still used. Also, in order to use 'ctx', platform_get_drvdata(pdev) should be called. > > I don't mind one solution over the other too much. Let me know which > you'd prefer. > > > Signed-off-by: Wei Yongjun > > --- > > drivers/mtd/nand/au1550nd.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/drivers/mtd/nand/au1550nd.c b/drivers/mtd/nand/au1550nd.c > > index ae8dd7c..909b673 100644 > > --- a/drivers/mtd/nand/au1550nd.c > > +++ b/drivers/mtd/nand/au1550nd.c > > @@ -480,6 +480,8 @@ static int au1550nd_probe(struct platform_device *pdev) > > > > mtd_device_register(>info, pd->parts, pd->num_parts); > > > > + platform_set_drvdata(pdev, ctx); > > + > > Personally, I'd choose to call platform_set_drvdata() earlier in the > probe routine (e.g., immediately after its allocation), in case we end > up calling platform_get_drvdata() from some sub-routine in the future. Do you mean the following? But, most drivers calls platform_set_drvdata() later in the probe routine. static int au1550nd_probe(struct platform_device *pdev) { struct au1550nd_platdata *pd; struct au1550nd_ctx *ctx; struct nand_chip *this; struct resource *r; int ret, cs; pd = dev_get_platdata(>dev); if (!pd) { dev_err(>dev, "missing platform data\n"); return -ENODEV; } ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); if (!ctx) { dev_err(>dev, "no memory for NAND context\n"); return -ENOMEM; } + platform_set_drvdata(pdev, ctx); + Best regards, Jingoo Han -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] MIPS: Alchemy: add missing platform_set_drvdata() in au1550nd_probe()
On Mon, Nov 11, 2013 at 02:18:29PM +0800, Wei Yongjun wrote: > From: Wei Yongjun > > Add missing platform_set_drvdata() in au1550nd_probe(), otherwise > calling platform_get_drvdata() in remove returns NULL. An alternative solution: just allocate ctx with devm_kzalloc(). Then you don't have to kfree() it at all. I don't mind one solution over the other too much. Let me know which you'd prefer. > Signed-off-by: Wei Yongjun > --- > drivers/mtd/nand/au1550nd.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/mtd/nand/au1550nd.c b/drivers/mtd/nand/au1550nd.c > index ae8dd7c..909b673 100644 > --- a/drivers/mtd/nand/au1550nd.c > +++ b/drivers/mtd/nand/au1550nd.c > @@ -480,6 +480,8 @@ static int au1550nd_probe(struct platform_device *pdev) > > mtd_device_register(>info, pd->parts, pd->num_parts); > > + platform_set_drvdata(pdev, ctx); > + Personally, I'd choose to call platform_set_drvdata() earlier in the probe routine (e.g., immediately after its allocation), in case we end up calling platform_get_drvdata() from some sub-routine in the future. > return 0; > > out3: > Brian -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] MIPS: Alchemy: add missing platform_set_drvdata() in au1550nd_probe()
On Mon, Nov 11, 2013 at 02:18:29PM +0800, Wei Yongjun wrote: From: Wei Yongjun yongjun_...@trendmicro.com.cn Add missing platform_set_drvdata() in au1550nd_probe(), otherwise calling platform_get_drvdata() in remove returns NULL. An alternative solution: just allocate ctx with devm_kzalloc(). Then you don't have to kfree() it at all. I don't mind one solution over the other too much. Let me know which you'd prefer. Signed-off-by: Wei Yongjun yongjun_...@trendmicro.com.cn --- drivers/mtd/nand/au1550nd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/mtd/nand/au1550nd.c b/drivers/mtd/nand/au1550nd.c index ae8dd7c..909b673 100644 --- a/drivers/mtd/nand/au1550nd.c +++ b/drivers/mtd/nand/au1550nd.c @@ -480,6 +480,8 @@ static int au1550nd_probe(struct platform_device *pdev) mtd_device_register(ctx-info, pd-parts, pd-num_parts); + platform_set_drvdata(pdev, ctx); + Personally, I'd choose to call platform_set_drvdata() earlier in the probe routine (e.g., immediately after its allocation), in case we end up calling platform_get_drvdata() from some sub-routine in the future. return 0; out3: Brian -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] MIPS: Alchemy: add missing platform_set_drvdata() in au1550nd_probe()
On Wednesday, November 27, 2013 8:50 AM, Brian Norris wrote: Hi Brian Norris, I added my questions as below. :-) On Mon, Nov 11, 2013 at 02:18:29PM +0800, Wei Yongjun wrote: From: Wei Yongjun yongjun_...@trendmicro.com.cn Add missing platform_set_drvdata() in au1550nd_probe(), otherwise calling platform_get_drvdata() in remove returns NULL. An alternative solution: just allocate ctx with devm_kzalloc().Then you don't have to kfree() it at all. Even if devm_kzalloc() is used, missing platform_set_drvdata() will be still necessary. static int au1550nd_remove(struct platform_device *pdev) { struct au1550nd_ctx *ctx = platform_get_drvdata(pdev); . nand_release(ctx-info); 'ctx' is still used. Also, in order to use 'ctx', platform_get_drvdata(pdev) should be called. I don't mind one solution over the other too much. Let me know which you'd prefer. Signed-off-by: Wei Yongjun yongjun_...@trendmicro.com.cn --- drivers/mtd/nand/au1550nd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/mtd/nand/au1550nd.c b/drivers/mtd/nand/au1550nd.c index ae8dd7c..909b673 100644 --- a/drivers/mtd/nand/au1550nd.c +++ b/drivers/mtd/nand/au1550nd.c @@ -480,6 +480,8 @@ static int au1550nd_probe(struct platform_device *pdev) mtd_device_register(ctx-info, pd-parts, pd-num_parts); + platform_set_drvdata(pdev, ctx); + Personally, I'd choose to call platform_set_drvdata() earlier in the probe routine (e.g., immediately after its allocation), in case we end up calling platform_get_drvdata() from some sub-routine in the future. Do you mean the following? But, most drivers calls platform_set_drvdata() later in the probe routine. static int au1550nd_probe(struct platform_device *pdev) { struct au1550nd_platdata *pd; struct au1550nd_ctx *ctx; struct nand_chip *this; struct resource *r; int ret, cs; pd = dev_get_platdata(pdev-dev); if (!pd) { dev_err(pdev-dev, missing platform data\n); return -ENODEV; } ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); if (!ctx) { dev_err(pdev-dev, no memory for NAND context\n); return -ENOMEM; } + platform_set_drvdata(pdev, ctx); + Best regards, Jingoo Han -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] MIPS: Alchemy: add missing platform_set_drvdata() in au1550nd_probe()
Hi Jingoo, On Wed, Nov 27, 2013 at 09:14:18AM +0900, Jingoo Han wrote: On Wednesday, November 27, 2013 8:50 AM, Brian Norris wrote: On Mon, Nov 11, 2013 at 02:18:29PM +0800, Wei Yongjun wrote: From: Wei Yongjun yongjun_...@trendmicro.com.cn Add missing platform_set_drvdata() in au1550nd_probe(), otherwise calling platform_get_drvdata() in remove returns NULL. An alternative solution: just allocate ctx with devm_kzalloc().Then you don't have to kfree() it at all. Even if devm_kzalloc() is used, missing platform_set_drvdata() will be still necessary. static int au1550nd_remove(struct platform_device *pdev) { struct au1550nd_ctx *ctx = platform_get_drvdata(pdev); . nand_release(ctx-info); 'ctx' is still used. Also, in order to use 'ctx', platform_get_drvdata(pdev) should be called. Ah, I overlooked that. Thanks. In that case, you still have to do something like this patch, and devm_kzalloc() can be left for another day (or not done at all). I don't mind one solution over the other too much. Let me know which you'd prefer. Signed-off-by: Wei Yongjun yongjun_...@trendmicro.com.cn --- drivers/mtd/nand/au1550nd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/mtd/nand/au1550nd.c b/drivers/mtd/nand/au1550nd.c index ae8dd7c..909b673 100644 --- a/drivers/mtd/nand/au1550nd.c +++ b/drivers/mtd/nand/au1550nd.c @@ -480,6 +480,8 @@ static int au1550nd_probe(struct platform_device *pdev) mtd_device_register(ctx-info, pd-parts, pd-num_parts); + platform_set_drvdata(pdev, ctx); + Personally, I'd choose to call platform_set_drvdata() earlier in the probe routine (e.g., immediately after its allocation), in case we end up calling platform_get_drvdata() from some sub-routine in the future. Do you mean the following? But, most drivers calls platform_set_drvdata() later in the probe routine. I wouldn't say most. An unscientific survey seemed to show some variation, with no clear pattern. static int au1550nd_probe(struct platform_device *pdev) { struct au1550nd_platdata *pd; struct au1550nd_ctx *ctx; struct nand_chip *this; struct resource *r; int ret, cs; pd = dev_get_platdata(pdev-dev); if (!pd) { dev_err(pdev-dev, missing platform data\n); return -ENODEV; } ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); if (!ctx) { dev_err(pdev-dev, no memory for NAND context\n); return -ENOMEM; } + platform_set_drvdata(pdev, ctx); + Yes, that looks better to me. Brian -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] MIPS: Alchemy: add missing platform_set_drvdata() in au1550nd_probe()
From: Wei Yongjun Add missing platform_set_drvdata() in au1550nd_probe(), otherwise calling platform_get_drvdata() in remove returns NULL. Signed-off-by: Wei Yongjun --- drivers/mtd/nand/au1550nd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/mtd/nand/au1550nd.c b/drivers/mtd/nand/au1550nd.c index ae8dd7c..909b673 100644 --- a/drivers/mtd/nand/au1550nd.c +++ b/drivers/mtd/nand/au1550nd.c @@ -480,6 +480,8 @@ static int au1550nd_probe(struct platform_device *pdev) mtd_device_register(>info, pd->parts, pd->num_parts); + platform_set_drvdata(pdev, ctx); + return 0; out3: -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] MIPS: Alchemy: add missing platform_set_drvdata() in au1550nd_probe()
From: Wei Yongjun yongjun_...@trendmicro.com.cn Add missing platform_set_drvdata() in au1550nd_probe(), otherwise calling platform_get_drvdata() in remove returns NULL. Signed-off-by: Wei Yongjun yongjun_...@trendmicro.com.cn --- drivers/mtd/nand/au1550nd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/mtd/nand/au1550nd.c b/drivers/mtd/nand/au1550nd.c index ae8dd7c..909b673 100644 --- a/drivers/mtd/nand/au1550nd.c +++ b/drivers/mtd/nand/au1550nd.c @@ -480,6 +480,8 @@ static int au1550nd_probe(struct platform_device *pdev) mtd_device_register(ctx-info, pd-parts, pd-num_parts); + platform_set_drvdata(pdev, ctx); + return 0; out3: -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/