Re: [PATCH] of: del redundant type conversion
On Wed, Apr 10, 2019 at 04:29:41PM +0800, xiaojiangfeng wrote: > The type of variable l in early_init_dt_scan_chosen is > int, there is no need to convert to int. > > Signed-off-by: xiaojiangfeng > --- > drivers/of/fdt.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Applied. Rob
Re: \\ 答复: [PATCH] of: del redundant type conversion
On 4/10/19 9:21 PM, Frank Rowand wrote: > On 4/10/19 9:13 PM, Frank Rowand wrote: >> On 4/10/19 6:51 PM, xiaojiangfeng wrote: >>> My pleasure. >>> >>> I am very new to sparse. >>> >>> I guess the warning is caused by the macro min. >> >> I think the warning is likely because the type of data is 'void *'. >> >> Removing the (int) cast is a good fix, but does not resolve >> the sparse warning. > > Let me correct myself. When I ran sparse, I see the removing min() does > eliminate the sparse warning. I'm not sure why, so I'll go dig a little > deeper. Digging leaves me with more information, but still not sure of the actual underlying cause. min() is defined in include/linux/kernel.h. Unraveling the defines, the code that sparse is complaining about is in __no_side_effects(), which is: #define __no_side_effects(x, y) \ (__is_constexpr(x) && __is_constexpr(y)) and __is_constexpr() is: #define __is_constexpr(x) \ (sizeof(int) == sizeof(*(8 ? ((void *)((long)(x) * 0l)) : (int *)8))) The compiler warning points to the second sizeof() in the __is_constexpr() for 'l', which expands as: (sizeof(int) == sizeof(*(8 ? ((void *)((long)( l) * 0l)) : (int *)8))) I'll dig into this a little more, to see if maybe the problem is related to my compiler version or sparse version. Or if the reason lies elsewhere. -Frank > > -Frank > >> >> -Frank >> >> >>> Then I submitted my changes. >>> >>> Thanks for code review. >>> >>> >>> -邮件原件- >>> 发件人: Frank Rowand [mailto:frowand.l...@gmail.com] >>> 发送时间: 2019年4月11日 2:50 >>> 收件人: xiaojiangfeng ; robh...@kernel.org; >>> r...@kernel.org >>> 抄送: devicet...@vger.kernel.org; linux-kernel@vger.kernel.org >>> 主题: Re: [PATCH] of: del redundant type conversion >>> >>> On 4/10/19 1:29 AM, xiaojiangfeng wrote: >>>> The type of variable l in early_init_dt_scan_chosen is int, there is >>>> no need to convert to int. >>>> >>>> Signed-off-by: xiaojiangfeng >>>> --- >>>> drivers/of/fdt.c | 2 +- >>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>> >>>> diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index >>>> 4734223..de893c9 100644 >>>> --- a/drivers/of/fdt.c >>>> +++ b/drivers/of/fdt.c >>>> @@ -1091,7 +1091,7 @@ int __init early_init_dt_scan_chosen(unsigned long >>>> node, const char *uname, >>>>/* Retrieve command line */ >>>>p = of_get_flat_dt_prop(node, "bootargs", ); >>>>if (p != NULL && l > 0) >>>> - strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE)); >>>> + strlcpy(data, p, min(l, COMMAND_LINE_SIZE)); >>>> >>>>/* >>>> * CONFIG_CMDLINE is meant to be a default in case nothing else >>>> >>> >>> Thanks for catching the redundant cast. >>> >>> There is a second problem detected by sparse on that line: >>> >>> drivers/of/fdt.c:1094:34: warning: expression using sizeof(void) >>> >>> Can you please fix both issues? >>> >>> Thanks, >>> >>> Frank >>> >> >> > >
Re: [PATCH] of: del redundant type conversion
On 4/10/19 1:29 AM, xiaojiangfeng wrote: > The type of variable l in early_init_dt_scan_chosen is > int, there is no need to convert to int. > > Signed-off-by: xiaojiangfeng > --- > drivers/of/fdt.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c > index 4734223..de893c9 100644 > --- a/drivers/of/fdt.c > +++ b/drivers/of/fdt.c > @@ -1091,7 +1091,7 @@ int __init early_init_dt_scan_chosen(unsigned long > node, const char *uname, > /* Retrieve command line */ > p = of_get_flat_dt_prop(node, "bootargs", ); > if (p != NULL && l > 0) > - strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE)); > + strlcpy(data, p, min(l, COMMAND_LINE_SIZE)); > > /* >* CONFIG_CMDLINE is meant to be a default in case nothing else > My first reply to this patch asked for a sparse warning on this line to also be fixed. After xiaojiangfeng followed up with a different patch to try to resolve the issues with this line of code, I see that the sparse warning was not caused by my first conjecture and this patch is the correct one to apply. I will pursue the cause of the sparse warning myself separately. Reviewed-by: Frank Rowand
Re: \\ 答复: [PATCH] of: del redundant type conversion
On 4/10/19 9:13 PM, Frank Rowand wrote: > On 4/10/19 6:51 PM, xiaojiangfeng wrote: >> My pleasure. >> >> I am very new to sparse. >> >> I guess the warning is caused by the macro min. > > I think the warning is likely because the type of data is 'void *'. > > Removing the (int) cast is a good fix, but does not resolve > the sparse warning. Let me correct myself. When I ran sparse, I see the removing min() does eliminate the sparse warning. I'm not sure why, so I'll go dig a little deeper. -Frank > > -Frank > > >> Then I submitted my changes. >> >> Thanks for code review. >> >> >> -邮件原件- >> 发件人: Frank Rowand [mailto:frowand.l...@gmail.com] >> 发送时间: 2019年4月11日 2:50 >> 收件人: xiaojiangfeng ; robh...@kernel.org; >> r...@kernel.org >> 抄送: devicet...@vger.kernel.org; linux-kernel@vger.kernel.org >> 主题: Re: [PATCH] of: del redundant type conversion >> >> On 4/10/19 1:29 AM, xiaojiangfeng wrote: >>> The type of variable l in early_init_dt_scan_chosen is int, there is >>> no need to convert to int. >>> >>> Signed-off-by: xiaojiangfeng >>> --- >>> drivers/of/fdt.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index >>> 4734223..de893c9 100644 >>> --- a/drivers/of/fdt.c >>> +++ b/drivers/of/fdt.c >>> @@ -1091,7 +1091,7 @@ int __init early_init_dt_scan_chosen(unsigned long >>> node, const char *uname, >>> /* Retrieve command line */ >>> p = of_get_flat_dt_prop(node, "bootargs", ); >>> if (p != NULL && l > 0) >>> - strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE)); >>> + strlcpy(data, p, min(l, COMMAND_LINE_SIZE)); >>> >>> /* >>> * CONFIG_CMDLINE is meant to be a default in case nothing else >>> >> >> Thanks for catching the redundant cast. >> >> There is a second problem detected by sparse on that line: >> >> drivers/of/fdt.c:1094:34: warning: expression using sizeof(void) >> >> Can you please fix both issues? >> >> Thanks, >> >> Frank >> > >
Re: \\ 答复: [PATCH] of: del redundant type conversion
On 4/10/19 6:51 PM, xiaojiangfeng wrote: > My pleasure. > > I am very new to sparse. > > I guess the warning is caused by the macro min. I think the warning is likely because the type of data is 'void *'. Removing the (int) cast is a good fix, but does not resolve the sparse warning. -Frank > Then I submitted my changes. > > Thanks for code review. > > > -邮件原件- > 发件人: Frank Rowand [mailto:frowand.l...@gmail.com] > 发送时间: 2019年4月11日 2:50 > 收件人: xiaojiangfeng ; robh...@kernel.org; > r...@kernel.org > 抄送: devicet...@vger.kernel.org; linux-kernel@vger.kernel.org > 主题: Re: [PATCH] of: del redundant type conversion > > On 4/10/19 1:29 AM, xiaojiangfeng wrote: >> The type of variable l in early_init_dt_scan_chosen is int, there is >> no need to convert to int. >> >> Signed-off-by: xiaojiangfeng >> --- >> drivers/of/fdt.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index >> 4734223..de893c9 100644 >> --- a/drivers/of/fdt.c >> +++ b/drivers/of/fdt.c >> @@ -1091,7 +1091,7 @@ int __init early_init_dt_scan_chosen(unsigned long >> node, const char *uname, >> /* Retrieve command line */ >> p = of_get_flat_dt_prop(node, "bootargs", ); >> if (p != NULL && l > 0) >> -strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE)); >> +strlcpy(data, p, min(l, COMMAND_LINE_SIZE)); >> >> /* >> * CONFIG_CMDLINE is meant to be a default in case nothing else >> > > Thanks for catching the redundant cast. > > There is a second problem detected by sparse on that line: > > drivers/of/fdt.c:1094:34: warning: expression using sizeof(void) > > Can you please fix both issues? > > Thanks, > > Frank >
Re: \\ 答复: [PATCH] of: del redundant type conversion
My pleasure. I am very new to sparse. I guess the warning is caused by the macro min. Then I submitted my changes. Thanks for code review. -邮件原件- 发件人: Frank Rowand [mailto:frowand.l...@gmail.com] 发送时间: 2019年4月11日 2:50 收件人: xiaojiangfeng ; robh...@kernel.org; r...@kernel.org 抄送: devicet...@vger.kernel.org; linux-kernel@vger.kernel.org 主题: Re: [PATCH] of: del redundant type conversion On 4/10/19 1:29 AM, xiaojiangfeng wrote: > The type of variable l in early_init_dt_scan_chosen is int, there is > no need to convert to int. > > Signed-off-by: xiaojiangfeng > --- > drivers/of/fdt.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index > 4734223..de893c9 100644 > --- a/drivers/of/fdt.c > +++ b/drivers/of/fdt.c > @@ -1091,7 +1091,7 @@ int __init early_init_dt_scan_chosen(unsigned long > node, const char *uname, > /* Retrieve command line */ > p = of_get_flat_dt_prop(node, "bootargs", ); > if (p != NULL && l > 0) > - strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE)); > + strlcpy(data, p, min(l, COMMAND_LINE_SIZE)); > > /* >* CONFIG_CMDLINE is meant to be a default in case nothing else > Thanks for catching the redundant cast. There is a second problem detected by sparse on that line: drivers/of/fdt.c:1094:34: warning: expression using sizeof(void) Can you please fix both issues? Thanks, Frank
Re: [PATCH] of: del redundant type conversion
On 4/10/19 1:29 AM, xiaojiangfeng wrote: > The type of variable l in early_init_dt_scan_chosen is > int, there is no need to convert to int. > > Signed-off-by: xiaojiangfeng > --- > drivers/of/fdt.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c > index 4734223..de893c9 100644 > --- a/drivers/of/fdt.c > +++ b/drivers/of/fdt.c > @@ -1091,7 +1091,7 @@ int __init early_init_dt_scan_chosen(unsigned long > node, const char *uname, > /* Retrieve command line */ > p = of_get_flat_dt_prop(node, "bootargs", ); > if (p != NULL && l > 0) > - strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE)); > + strlcpy(data, p, min(l, COMMAND_LINE_SIZE)); > > /* >* CONFIG_CMDLINE is meant to be a default in case nothing else > Thanks for catching the redundant cast. There is a second problem detected by sparse on that line: drivers/of/fdt.c:1094:34: warning: expression using sizeof(void) Can you please fix both issues? Thanks, Frank
[PATCH] of: del redundant type conversion
The type of variable l in early_init_dt_scan_chosen is int, there is no need to convert to int. Signed-off-by: xiaojiangfeng --- drivers/of/fdt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index 4734223..de893c9 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c @@ -1091,7 +1091,7 @@ int __init early_init_dt_scan_chosen(unsigned long node, const char *uname, /* Retrieve command line */ p = of_get_flat_dt_prop(node, "bootargs", ); if (p != NULL && l > 0) - strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE)); + strlcpy(data, p, min(l, COMMAND_LINE_SIZE)); /* * CONFIG_CMDLINE is meant to be a default in case nothing else -- 1.8.5.6