From: Nicola Vetrini <nicola.vetrini@bugseng.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Xen Devel <xen-devel@lists.xenproject.org>,
Julien Grall <julien@xen.org>,
Stefano Stabellini <sstabellini@kernel.org>,
Jbeulich <jbeulich@suse.com>, Roger Pau <roger.pau@citrix.com>,
Bertrand Marquis <bertrand.marquis@arm.com>,
Michal Orzel <michal.orzel@amd.com>,
Consulting <consulting@bugseng.com>
Subject: Re: Remaining violations of MISRA Rule 7.4
Date: Mon, 13 Nov 2023 12:11:23 +0100 [thread overview]
Message-ID: <12d2760c2ada2fcd29594cef767f24b3@bugseng.com> (raw)
In-Reply-To: <bdb7efb1-b8b2-4426-a46d-e8f5afdba0f6@citrix.com>
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)
next prev parent reply other threads:[~2023-11-13 11:11 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
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 [this message]
2023-11-20 16:40 ` Nicola Vetrini
2023-11-20 23:08 ` Andrew Cooper
2023-11-21 8:00 ` Nicola Vetrini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=12d2760c2ada2fcd29594cef767f24b3@bugseng.com \
--to=nicola.vetrini@bugseng.com \
--cc=andrew.cooper3@citrix.com \
--cc=bertrand.marquis@arm.com \
--cc=consulting@bugseng.com \
--cc=jbeulich@suse.com \
--cc=julien@xen.org \
--cc=michal.orzel@amd.com \
--cc=roger.pau@citrix.com \
--cc=sstabellini@kernel.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.