* Remaining violations of MISRA Rule 7.4
@ 2023-11-08 16:24 Nicola Vetrini
2023-11-08 18:45 ` Andrew Cooper
0 siblings, 1 reply; 6+ messages in thread
From: Nicola Vetrini @ 2023-11-08 16:24 UTC (permalink / raw)
To: Xen Devel
Cc: Julien Grall, Stefano Stabellini, Jbeulich, Andrew Cooper3,
Roger Pau, Bertrand Marquis, Michal Orzel, Consulting
Hi everyone,
I was looking at leftover violations for MISRA Rule 7.4:
'A string literal shall not be assigned to an object unless the object's
type
is "pointer to const-qualified char" '
You can see the referenced violations at [1] and [2].
I think the ones in x86/setup.c can be taken care of either by making an
early return
from cmdline_cook, given that one caller never supplies a NULL cmdline,
while the other
properly takes care of the possibility of returning NULL, afaict.
static char * __init cmdline_cook(char *p, const char *loader_name)
{
- p = p ? : "";
+ if ( p == NULL )
+ return NULL;
or changing the type of "loader" to const char*
void __init noreturn __start_xen(unsigned long mbi_p)
{
- const char *memmap_type = NULL;
- char *cmdline, *kextra, *loader;
+ const char *memmap_type = NULL, *loader = NULL;
+ char *cmdline, *kextra;;
as, as far as I can tell, it's never changed after
loader = (mbi->flags & MBI_LOADERNAME)
? (char *)__va(mbi->boot_loader_name) : "unknown";
However, the one in xen/arch/arm/efi/efi-boot.h
name.s = "xen";
does not look to have a clear resolution
path, therefore I propose to deviate this with a SAF textual deviation,
whose justification
relies on the fact that the string is never modified afterwards.
For the one in arm-uart.c from the discussion, I'm testing possible
solution with no code
changes, but if that doesn't work out, then I'm inclined towards a
deviation, as options
is never modified afterwards.
What do you think?
[1]
https://saas.eclairit.com:3787/fs/var/local/eclair/XEN.ecdf/ECLAIR_normal/arm/for-4.19/ARM64-Set1/376/PROJECT.ecd;/by_service/MC3R1.R7.4.html
[2]
https://saas.eclairit.com:3787/fs/var/local/eclair/XEN.ecdf/ECLAIR_normal/x86_64/staging/X86_64-Set1/376/PROJECT.ecd;/by_service/MC3R1.R7.4.html
--
Nicola Vetrini, BSc
Software Engineer, BUGSENG srl (https://bugseng.com)
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Remaining violations of MISRA Rule 7.4
2023-11-08 16:24 Remaining violations of MISRA Rule 7.4 Nicola Vetrini
@ 2023-11-08 18:45 ` Andrew Cooper
2023-11-13 11:11 ` Nicola Vetrini
2023-11-20 16:40 ` Nicola Vetrini
0 siblings, 2 replies; 6+ messages in thread
From: Andrew Cooper @ 2023-11-08 18:45 UTC (permalink / raw)
To: Nicola Vetrini, Xen Devel
Cc: Julien Grall, Stefano Stabellini, Jbeulich, Roger Pau,
Bertrand Marquis, Michal Orzel, Consulting
On 08/11/2023 4:24 pm, Nicola Vetrini wrote:
> Hi everyone,
>
> I was looking at leftover violations for MISRA Rule 7.4:
> 'A string literal shall not be assigned to an object unless the
> object's type
> is "pointer to const-qualified char" '
>
> You can see the referenced violations at [1] and [2].
>
> I think the ones in x86/setup.c can be taken care of either by making
> an early return
> from cmdline_cook, given that one caller never supplies a NULL
> cmdline, while the other
> properly takes care of the possibility of returning NULL, afaict.
>
> static char * __init cmdline_cook(char *p, const char *loader_name)
> {
> - p = p ? : "";
> + if ( p == NULL )
> + return NULL;
>
> or changing the type of "loader" to const char*
>
> void __init noreturn __start_xen(unsigned long mbi_p)
> {
> - const char *memmap_type = NULL;
> - char *cmdline, *kextra, *loader;
> + const char *memmap_type = NULL, *loader = NULL;
> + char *cmdline, *kextra;;
>
> as, as far as I can tell, it's never changed after
>
> loader = (mbi->flags & MBI_LOADERNAME)
> ? (char *)__va(mbi->boot_loader_name) : "unknown";
>
> However, the one in xen/arch/arm/efi/efi-boot.h
>
> name.s = "xen";
>
> does not look to have a clear resolution
> path, therefore I propose to deviate this with a SAF textual
> deviation, whose justification
> relies on the fact that the string is never modified afterwards.
>
> For the one in arm-uart.c from the discussion, I'm testing possible
> solution with no code
> changes, but if that doesn't work out, then I'm inclined towards a
> deviation, as options
> is never modified afterwards.
>
> What do you think?
I've just rebased and pushed the residual from the past work (although I
missed the ARM EFI fix.)
https://xenbits.xen.org/gitweb/?p=people/andrewcoop/xen.git;a=commitdiff;h=0f06bab762f5201f3e00aaaee704c3c01f516b51
https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1065699873
I'm going to make a firm request that we fix this by activating
-Wwrite-strings Xen wide, because that's by far and away the best way to
stop regressions creeping back in.
In start_xen(), basically whatever goes. All that's doing is processing
of one command line into another, and your version looks a bit neater
than mine.
The name.s cases (it's duplicated in x86 and ARM) are more tricky. The
compiler warning can be silenced by swapping name.s for name.cs but I
have no idea whether Eclair can see through that piece of blatent lying.
~Andrew
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Remaining violations of MISRA Rule 7.4
2023-11-08 18:45 ` Andrew Cooper
@ 2023-11-13 11:11 ` Nicola Vetrini
2023-11-20 16:40 ` Nicola Vetrini
1 sibling, 0 replies; 6+ messages in thread
From: Nicola Vetrini @ 2023-11-13 11:11 UTC (permalink / raw)
To: Andrew Cooper
Cc: Xen Devel, Julien Grall, Stefano Stabellini, Jbeulich, Roger Pau,
Bertrand Marquis, Michal Orzel, Consulting
On 2023-11-08 19:45, Andrew Cooper wrote:
> On 08/11/2023 4:24 pm, Nicola Vetrini wrote:
>> Hi everyone,
>>
>> I was looking at leftover violations for MISRA Rule 7.4:
>> 'A string literal shall not be assigned to an object unless the
>> object's type
>> is "pointer to const-qualified char" '
>>
>> You can see the referenced violations at [1] and [2].
>>
>> I think the ones in x86/setup.c can be taken care of either by making
>> an early return
>> from cmdline_cook, given that one caller never supplies a NULL
>> cmdline, while the other
>> properly takes care of the possibility of returning NULL, afaict.
>>
>> static char * __init cmdline_cook(char *p, const char *loader_name)
>> {
>> - p = p ? : "";
>> + if ( p == NULL )
>> + return NULL;
>>
>> or changing the type of "loader" to const char*
>>
>> void __init noreturn __start_xen(unsigned long mbi_p)
>> {
>> - const char *memmap_type = NULL;
>> - char *cmdline, *kextra, *loader;
>> + const char *memmap_type = NULL, *loader = NULL;
>> + char *cmdline, *kextra;;
>>
>> as, as far as I can tell, it's never changed after
>>
>> loader = (mbi->flags & MBI_LOADERNAME)
>> ? (char *)__va(mbi->boot_loader_name) : "unknown";
>>
>> However, the one in xen/arch/arm/efi/efi-boot.h
>>
>> name.s = "xen";
>>
>> does not look to have a clear resolution
>> path, therefore I propose to deviate this with a SAF textual
>> deviation, whose justification
>> relies on the fact that the string is never modified afterwards.
>>
>> For the one in arm-uart.c from the discussion, I'm testing possible
>> solution with no code
>> changes, but if that doesn't work out, then I'm inclined towards a
>> deviation, as options
>> is never modified afterwards.
>>
>> What do you think?
>
> I've just rebased and pushed the residual from the past work (although
> I
> missed the ARM EFI fix.)
>
> https://xenbits.xen.org/gitweb/?p=people/andrewcoop/xen.git;a=commitdiff;h=0f06bab762f5201f3e00aaaee704c3c01f516b51
> https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1065699873
>
> I'm going to make a firm request that we fix this by activating
> -Wwrite-strings Xen wide, because that's by far and away the best way
> to
> stop regressions creeping back in.
>
Yes, it seems the best solution. I forgot about that patch, sorry.
drivers/char/arm-uart.c: In function 'dt_uart_init':
drivers/char/arm-uart.c:81:17: error: assignment discards 'const'
qualifier from pointer target type [-Werror=discarded-qualifiers]
81 | options = "";
| ^
Here I was thinking about
options = strchr(opt_dtuart, ':');
if ( options != NULL )
*(options++) = '\0';
- else
- options = "";
- printk("Looking for dtuart at \"%s\", options \"%s\"\n", devpath,
options);
+ printk("Looking for dtuart at \"%s\", options \"%s\"\n", devpath,
+ options ? options : "");
> In start_xen(), basically whatever goes. All that's doing is
> processing
> of one command line into another, and your version looks a bit neater
> than mine.
>
> The name.s cases (it's duplicated in x86 and ARM) are more tricky. The
> compiler warning can be silenced by swapping name.s for name.cs but I
> have no idea whether Eclair can see through that piece of blatent
> lying.
>
No it doesn't, because the type of the lhs is checked, and if it's
constant then it's enough for the Rule.
--
Nicola Vetrini, BSc
Software Engineer, BUGSENG srl (https://bugseng.com)
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Remaining violations of MISRA Rule 7.4
2023-11-08 18:45 ` Andrew Cooper
2023-11-13 11:11 ` Nicola Vetrini
@ 2023-11-20 16:40 ` Nicola Vetrini
2023-11-20 23:08 ` Andrew Cooper
1 sibling, 1 reply; 6+ messages in thread
From: Nicola Vetrini @ 2023-11-20 16:40 UTC (permalink / raw)
To: Andrew Cooper
Cc: Xen Devel, Julien Grall, Stefano Stabellini, Jbeulich, Roger Pau,
Bertrand Marquis, Michal Orzel, Consulting
> I've just rebased and pushed the residual from the past work (although
> I
> missed the ARM EFI fix.)
>
> https://xenbits.xen.org/gitweb/?p=people/andrewcoop/xen.git;a=commitdiff;h=0f06bab762f5201f3e00aaaee704c3c01f516b51
> https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1065699873
>
> I'm going to make a firm request that we fix this by activating
> -Wwrite-strings Xen wide, because that's by far and away the best way
> to
> stop regressions creeping back in.
>
> In start_xen(), basically whatever goes. All that's doing is
> processing
> of one command line into another, and your version looks a bit neater
> than mine.
>
> The name.s cases (it's duplicated in x86 and ARM) are more tricky. The
> compiler warning can be silenced by swapping name.s for name.cs but I
> have no idea whether Eclair can see through that piece of blatent
> lying.
>
> ~Andrew
Just to avoid any misunderstanding: do you have the intention of
evaluating and then perhaps integrate the fixes that at the moment block
the introduction of -Wwrite-strings and then respin your patch, or
should I do something specifically?
--
Nicola Vetrini, BSc
Software Engineer, BUGSENG srl (https://bugseng.com)
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Remaining violations of MISRA Rule 7.4
2023-11-20 16:40 ` Nicola Vetrini
@ 2023-11-20 23:08 ` Andrew Cooper
2023-11-21 8:00 ` Nicola Vetrini
0 siblings, 1 reply; 6+ messages in thread
From: Andrew Cooper @ 2023-11-20 23:08 UTC (permalink / raw)
To: Nicola Vetrini
Cc: Xen Devel, Julien Grall, Stefano Stabellini, Jbeulich, Roger Pau,
Bertrand Marquis, Michal Orzel, Consulting
On 20/11/2023 4:40 pm, Nicola Vetrini wrote:
>> I've just rebased and pushed the residual from the past work (although I
>> missed the ARM EFI fix.)
>>
>> https://xenbits.xen.org/gitweb/?p=people/andrewcoop/xen.git;a=commitdiff;h=0f06bab762f5201f3e00aaaee704c3c01f516b51
>>
>> https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1065699873
>>
>> I'm going to make a firm request that we fix this by activating
>> -Wwrite-strings Xen wide, because that's by far and away the best way to
>> stop regressions creeping back in.
>>
>> In start_xen(), basically whatever goes. All that's doing is processing
>> of one command line into another, and your version looks a bit neater
>> than mine.
>>
>> The name.s cases (it's duplicated in x86 and ARM) are more tricky. The
>> compiler warning can be silenced by swapping name.s for name.cs but I
>> have no idea whether Eclair can see through that piece of blatent lying.
>>
>> ~Andrew
>
> Just to avoid any misunderstanding: do you have the intention of
> evaluating and then perhaps integrate the fixes that at the moment
> block the introduction of -Wwrite-strings and then respin your patch,
> or should I do something specifically?
>
Hopefully you'll find
https://lore.kernel.org/xen-devel/20231120224912.1421916-1-andrew.cooper3@citrix.com/T/#u
to your liking.
~Andrew
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Remaining violations of MISRA Rule 7.4
2023-11-20 23:08 ` Andrew Cooper
@ 2023-11-21 8:00 ` Nicola Vetrini
0 siblings, 0 replies; 6+ messages in thread
From: Nicola Vetrini @ 2023-11-21 8:00 UTC (permalink / raw)
To: Andrew Cooper
Cc: Xen Devel, Julien Grall, Stefano Stabellini, Jbeulich, Roger Pau,
Bertrand Marquis, Michal Orzel, Consulting
On 2023-11-21 00:08, Andrew Cooper wrote:
> On 20/11/2023 4:40 pm, Nicola Vetrini wrote:
>>> I've just rebased and pushed the residual from the past work
>>> (although I
>>> missed the ARM EFI fix.)
>>>
>>> https://xenbits.xen.org/gitweb/?p=people/andrewcoop/xen.git;a=commitdiff;h=0f06bab762f5201f3e00aaaee704c3c01f516b51
>>>
>>> https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1065699873
>>>
>>> I'm going to make a firm request that we fix this by activating
>>> -Wwrite-strings Xen wide, because that's by far and away the best way
>>> to
>>> stop regressions creeping back in.
>>>
>>> In start_xen(), basically whatever goes. All that's doing is
>>> processing
>>> of one command line into another, and your version looks a bit neater
>>> than mine.
>>>
>>> The name.s cases (it's duplicated in x86 and ARM) are more tricky.
>>> The
>>> compiler warning can be silenced by swapping name.s for name.cs but I
>>> have no idea whether Eclair can see through that piece of blatent
>>> lying.
>>>
>>> ~Andrew
>>
>> Just to avoid any misunderstanding: do you have the intention of
>> evaluating and then perhaps integrate the fixes that at the moment
>> block the introduction of -Wwrite-strings and then respin your patch,
>> or should I do something specifically?
>>
>
> Hopefully you'll find
> https://lore.kernel.org/xen-devel/20231120224912.1421916-1-andrew.cooper3@citrix.com/T/#u
> to your liking.
>
> ~Andrew
Definitely. Thank you for the effort you put on this.
--
Nicola Vetrini, BSc
Software Engineer, BUGSENG srl (https://bugseng.com)
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-11-21 8:00 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-08 16:24 Remaining violations of MISRA Rule 7.4 Nicola Vetrini
2023-11-08 18:45 ` Andrew Cooper
2023-11-13 11:11 ` Nicola Vetrini
2023-11-20 16:40 ` Nicola Vetrini
2023-11-20 23:08 ` Andrew Cooper
2023-11-21 8:00 ` Nicola Vetrini
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.