[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] xen/arm: smmu-v3: Fix MISRA C 2012 Rule 1.3 violations
- To: xenia <burzalodowa@xxxxxxxxx>
- From: Bertrand Marquis <Bertrand.Marquis@xxxxxxx>
- Date: Wed, 29 Jun 2022 09:03:25 +0000
- Accept-language: en-GB, en-US
- Arc-authentication-results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com])
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
- Arc-message-signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=oSk1Zu5fOg8U/urVtk/KJpmPDHRMBlo3TzNdLX3+2V0=; b=XXsKs7wSOZbkqmuFGAj9JfxeDjo5waDVm5GmbmLmFfPFjHwcCt+tCehGRnZF+9WogPjScZFiijWFEomKuJEEG6SxxB05whtO8ga7ZOaDDiquBQhwKEIgYUmmxi+I7awKJKvpb4Qr176rQCEmVVmD1RE9VWwI54R8sSKfGwOndF9qJKgIZvUPhXAQbUuR94lk5Wf0luHVsMW9ndepmtU2rsZ/WKLi2TYYTPYy7OUJEZGCl7OQpOXkX7DuVGRZMG5kRVvIP5+uHfwwI2tqu4+YKI/hzwM1A2r0ih/uaAGgFT3TfVPbv2i9ddIlmpZS1orLQUTu4M/wyafXZKB5FnIrbg==
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=oSk1Zu5fOg8U/urVtk/KJpmPDHRMBlo3TzNdLX3+2V0=; b=EUUJL5GeMNJZltLFcXuQOics4YGDsyed0JbG6rzsAwv7R02Zwj/V5Rn8UHRM+d8GD/PDRlmzii/oSa3T82SoJyetKG7WC4EtPpJsfzdx/PIVuefKR8K1PgN9IKMEzG3OgqF6fqXxkNZPUb+t211vsjGNJuPVD/0adktuFX5gHlDyqQ3cnoHQFGiin7qL43YjHygDL/k6M7phR35pLetyvwQkzBpGTx1MLg2neQA03edWbS9xDZ3nsTKphgmUT14cyLhVq3WIOVCIFo/0MkeGCdZZoCcFjSUJt8aCJyxDMw73fOSqkE3OtI9foL15KtaUZQuxNhHuHJUFYi8H+BXHCw==
- Arc-seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=lFOKF82+Ccpc2XKxJOTymJDPTLvmZSGCR9BO+3inUHHrVUsrjvTB8AB3f5DLEiwx2DJi7+9Qn/HqtiDK/QqEw22EP8AAY0GWjmFB4BPAELZySxuLUWzHvjVX8nD7y4Jp8wIz0065hnrjX7N3AXf/rPhTs47g8as0QEJ+alNNVWYPI6smg/TRNEtU2/TaMc/MjLCEGozm731c8FhMHr0BTIeNlKpJP9vSaGlT6TW/T/clVrP1K57kTaZZ9IwnddGBT3ZI1EvdNrkiqS1MCIeYyRUJuCHJTP8dwJ2xRUX2aTRQ4aWEQIg3VY/7ztcgbB+A0h2l9KK3tl52hMdARmtmjg==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DiChj5tQy4Hpu8NRIHW3EgVMkjoN3D0K8k9P5QFV/AjCfHrK/guQJVMb3MTTwFG90D28SM+xgnd3yc2l0zlR4nnohYe/jre8nZnyP60X1bcAW1KBxfZbVCeNIV/J4EODqcDrHpsS42OeZHcqggyEUce6iXXThqHv3ln9lRnJ0NVeIvj2TM5Z3bWy2Jng2ch+5qY5CjiYjF6jph87Awl49RutMooXUWW4MJo8PT3RVswL2xR0KuySR0i1bs6MoFvDRXjkvXcVCYF1OiQ0zAqUb0ZrCz1SKNdwuOBhvfDn+LV69rYWoDZFOGpuvZq12wGovc7ec9qeiMOcERojHfHBtQ==
- Authentication-results-original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
- Cc: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Rahul Singh <Rahul.Singh@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
- Delivery-date: Wed, 29 Jun 2022 09:03:53 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
- Nodisclaimer: true
- Original-authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
- Thread-index: AQHYiwEFKAxihkpP+kCxp/TNi89h5q1l/I6AgAAZcwCAAAIrgA==
- Thread-topic: [PATCH] xen/arm: smmu-v3: Fix MISRA C 2012 Rule 1.3 violations
Hi Xenia,
> On 29 Jun 2022, at 09:55, xenia <burzalodowa@xxxxxxxxx> wrote:
>
> Hi Bertrand,
>
> On 6/29/22 10:24, Bertrand Marquis wrote:
>> Hi Xenia,
>>
>>> On 28 Jun 2022, at 16:08, Xenia Ragiadakou <burzalodowa@xxxxxxxxx> wrote:
>>>
>>> The expression 1 << 31 produces undefined behaviour because the type of
>>> integer
>>> constant 1 is (signed) int and the result of shifting 1 by 31 bits is not
>>> representable in the (signed) int type.
>>> Change the type of 1 to unsigned int by adding the U suffix.
>>>
>>> Signed-off-by: Xenia Ragiadakou <burzalodowa@xxxxxxxxx>
>>> ---
>>> Q_OVERFLOW_FLAG has already been fixed in upstream kernel code.
>>> For GBPA_UPDATE I will submit a patch.
>>>
>>> xen/drivers/passthrough/arm/smmu-v3.c | 4 ++--
>>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/xen/drivers/passthrough/arm/smmu-v3.c
>>> b/xen/drivers/passthrough/arm/smmu-v3.c
>>> index 1e857f915a..f2562acc38 100644
>>> --- a/xen/drivers/passthrough/arm/smmu-v3.c
>>> +++ b/xen/drivers/passthrough/arm/smmu-v3.c
>>> @@ -338,7 +338,7 @@ static int platform_get_irq_byname_optional(struct
>>> device *dev,
>>> #define CR2_E2H (1 << 0)
>>>
>>> #define ARM_SMMU_GBPA 0x44
>>> -#define GBPA_UPDATE (1 << 31)
>>> +#define GBPA_UPDATE (1U << 31)
>>> #define GBPA_ABORT (1 << 20)
>>>
>>> #define ARM_SMMU_IRQ_CTRL 0x50
>>> @@ -410,7 +410,7 @@ static int platform_get_irq_byname_optional(struct
>>> device *dev,
>>>
>>> #define Q_IDX(llq, p) ((p) & ((1 <<
>>> (llq)->max_n_shift) - 1))
>>> #define Q_WRP(llq, p) ((p) & (1 <<
>>> (llq)->max_n_shift))
>> Could also make sense to fix those 2 to be coherent.
> According to the spec, the maximum value that max_n_shift can take is 19.
> Hence, 1 << (llq)->max_n_shift cannot produce undefined behavior.
I agree with that but my preference would be to not rely on deep analysis on
the code for those kind of cases and use 1U whenever possible.
What other maintainers think on this ?
>
> Personally, I have no problem to submit another patch that adds U/UL suffixes
> to all shifted integer constants in the file :) but ...
> It seems that this driver has been ported from linux and this file still uses
> linux coding style, probably because deviations will reduce its
> maintainability.
> Adding a U suffix to those two might be considered an unjustified deviation.
At this stage the SMMU code is starting to deviate a lot from Linux so it will
not be possible to update it easily to sync with latest linux code.
And the decision should be are we fixing it or should we fully skip this file
saying that it is coming from linux and should not be fixed.
We started to have a discussion during the FuSa meeting on this but we need to
come up with a conclusion per file.
On this one I would say keeping it with linux code style and near from the
linux one is not needed.
Rahul, Julien, Stefano: what do you think here ?
Cheers
Bertrand
>>> -#define Q_OVERFLOW_FLAG (1 << 31)
>>> +#define Q_OVERFLOW_FLAG (1U << 31)
>>> #define Q_OVF(p) ((p) & Q_OVERFLOW_FLAG)
>>> #define Q_ENT(q, p) ((q)->base + \
>>> Q_IDX(&((q)->llq), p) * \
>> Cheers
>> Bertrand
|