|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 4/6] xen: add SAF deviation for safe cast removal
From: Maria Celeste Cesario <maria.celeste.cesario@xxxxxxxxxxx>
The xen sources contain violations of MISRA C:2012 Rule 11.8 whose
headline states:
"A conversion shall not remove any const, volatile or _Atomic qualification
from the type pointed to by a pointer".
Add SAF-3-safe deviation: removal of const qualifier to comply with function
signature.
Signed-off-by: Maria Celeste Cesario <maria.celeste.cesario@xxxxxxxxxxx>
Signed-off-by: Simone Ballarin <simone.ballarin@xxxxxxxxxxx>
---
Changes in v2:
- reword SAF-3-safe text;
- merge comments on __hvm_copy;
- add SAF-3-safe comment in x86/hvm.c:3433;
- add SAF-3-safe comment on arm/guestcopy.c raw_copy_to_guest and
raw_copy_to_guest_flush_dcache.
---
docs/misra/safe.json | 8 ++++++++
xen/arch/arm/guestcopy.c | 2 ++
xen/arch/x86/hvm/hvm.c | 6 ++++--
3 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/docs/misra/safe.json b/docs/misra/safe.json
index 952324f85c..96b964293a 100644
--- a/docs/misra/safe.json
+++ b/docs/misra/safe.json
@@ -28,6 +28,14 @@
},
{
"id": "SAF-3-safe",
+ "analyser": {
+ "eclair": "MC3R1.R11.8"
+ },
+ "name": "MC3R1.R11.8: removal of const qualifier to comply with
function signature",
+ "text": "A single function could either read or write through a
passed in pointer, depending on how it is called. It is deemed safe to cast
away a const qualifier when passing a pointer to such a function, when the
other parameters guarantee read-only operation."
+ },
+ {
+ "id": "SAF-4-safe",
"analyser": {},
"name": "Sentinel",
"text": "Next ID to be used"
diff --git a/xen/arch/arm/guestcopy.c b/xen/arch/arm/guestcopy.c
index 6716b03561..cf80ac46b1 100644
--- a/xen/arch/arm/guestcopy.c
+++ b/xen/arch/arm/guestcopy.c
@@ -109,6 +109,7 @@ static unsigned long copy_guest(void *buf, uint64_t addr,
unsigned int len,
unsigned long raw_copy_to_guest(void *to, const void *from, unsigned int len)
{
+ /* SAF-3-safe COPY_to_guest doesn't modify from */
return copy_guest((void *)from, (vaddr_t)to, len,
GVA_INFO(current), COPY_to_guest | COPY_linear);
}
@@ -116,6 +117,7 @@ unsigned long raw_copy_to_guest(void *to, const void *from,
unsigned int len)
unsigned long raw_copy_to_guest_flush_dcache(void *to, const void *from,
unsigned int len)
{
+ /* SAF-3-safe COPY_to_guest doesn't modify from */
return copy_guest((void *)from, (vaddr_t)to, len, GVA_INFO(current),
COPY_to_guest | COPY_flush_dcache | COPY_linear);
}
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 523e0df57c..324893fbcc 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -3413,7 +3413,8 @@ static enum hvm_translation_result __hvm_copy(
enum hvm_translation_result hvm_copy_to_guest_phys(
paddr_t paddr, const void *buf, unsigned int size, struct vcpu *v)
{
- return __hvm_copy((void *)buf /* HVMCOPY_to_guest doesn't modify */,
+ /* SAF-3-safe HVMCOPY_to_guest doesn't modify buf */
+ return __hvm_copy((void *)buf,
paddr, size, v,
HVMCOPY_to_guest | HVMCOPY_phys, 0, NULL);
}
@@ -3429,7 +3430,8 @@ enum hvm_translation_result hvm_copy_to_guest_linear(
unsigned long addr, const void *buf, unsigned int size, uint32_t pfec,
pagefault_info_t *pfinfo)
{
- return __hvm_copy((void *)buf /* HVMCOPY_to_guest doesn't modify */,
+ /* SAF-3-safe HVMCOPY_to_guest doesn't modify buf */
+ return __hvm_copy((void *)buf,
addr, size, current, HVMCOPY_to_guest | HVMCOPY_linear,
PFEC_page_present | PFEC_write_access | pfec, pfinfo);
}
--
2.40.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |