On 5/6/26 12:27, Liu Kui wrote:
With FORTIFY_SOURCE, memcpy to a zero-length arrary field is flagged
as field-spanning, causing kernel warning. Switch to the C99 flexible
array [] syntax to fix this.
Changes:
- _data_buf[0] -> _data_buf[] in struct krpc_completion
- sync_resp[0] -> sync_resp[] in struct pcs_cs_iohdr
- nodes[0] -> nodes[] in struct pcs_cs_map_prop
- cs[0] -> cs[] in struct pcs_cs_list
- cs[0] -> cs[] in struct pcs_ioc_getmap
Link: https://virtuozzo.atlassian.net/browse/VSTOR-130548
Signed-off-by: Liu Kui <[email protected]>
---
...
diff --git a/fs/fuse/kio/pcs/pcs_krpc.h b/fs/fuse/kio/pcs/pcs_krpc.h
index 6a090ef66185..d5a7a56d84c8 100644
--- a/fs/fuse/kio/pcs/pcs_krpc.h
+++ b/fs/fuse/kio/pcs/pcs_krpc.h
@@ -99,7 +99,7 @@ struct krpc_completion {
void *private;
int data_len;
- u8 _data_buf[0];
+ u8 _data_buf[];
};
struct krpc_completion is embedded in struct krpc_req as a non-last member:
fs/fuse/kio/pcs/pcs_krpc.h lines 134-137
struct krpc_completion completion;
u32 gen;
struct llist_node llist_link;
A struct with a C99 flexible array member embedded as a non-last member of another struct is formally
undefined behavior. GCC's zero-length array extension [0] handled this correctly, but [] should
trigger warnings.
May be the compiler is very smart and detects that _data_buf is not used when struct krpc_completion
is embedded into struct krpc_req, but i think it's quite error prone.
May be better just to move struct krpc_completion to the end of struct krpc_req
?
Also, minor typo in the commit message: "arrary" should be "array".
#define KRPC_MAX_DATA_PAGES 256
diff --git a/fs/fuse/kio/pcs/pcs_map.h b/fs/fuse/kio/pcs/pcs_map.h
index bf8a0e7177d0..788a8cb16d8e 100644
--- a/fs/fuse/kio/pcs/pcs_map.h
+++ b/fs/fuse/kio/pcs/pcs_map.h
@@ -127,7 +127,7 @@ struct pcs_cs_list
int write_timeout;
int nsrv;
PCS_MAP_VERSION_T version; /* version inherented
from map */
- struct pcs_cs_record cs[0];
+ struct pcs_cs_record cs[];
};
/* TODO, LOCKING!!!!!
_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel