mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-18 03:01:26 +00:00
Apparently sparse ignores __attribute__((packed)) when applied to an enum
while gcc honors this attribute. The result is that sizeof(struct fcoe_rcv_info) is 48 when the header include/scsi/fc_frame.h is compiled with gcc and that sizeof(struct fcoe_rcv_info) > 48 when the same header is compiled by sparse. As a result, compilation with sparse fails due to the BUILD_BUG_ON() statement in the function fcoe_dev_from_skb(), even when checking a vanilla Linux kernel with sparse. The patch below slightly modifies include/scsi/fc_frame.h such that gcc and sparse interpret this header in the same way. Note: it is fine to revert this patch once the behavior of gcc and sparse is again in sync. git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1767 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
13
fcst/linux-patches/14-fc-frame-sparse-workaround
Normal file
13
fcst/linux-patches/14-fc-frame-sparse-workaround
Normal file
@@ -0,0 +1,13 @@
|
||||
--- a/include/scsi/fc_frame.h 2010-06-13 11:08:26.000000000 +0200
|
||||
+++ b/include/scsi/fc_frame.h 2010-06-13 11:08:53.000000000 +0200
|
||||
@@ -66,8 +66,8 @@ struct fcoe_rcv_info {
|
||||
struct fc_fcp_pkt *fr_fsp; /* for the corresponding fcp I/O */
|
||||
u32 fr_crc;
|
||||
u16 fr_max_payload; /* max FC payload */
|
||||
- enum fc_sof fr_sof; /* start of frame delimiter */
|
||||
- enum fc_eof fr_eof; /* end of frame delimiter */
|
||||
+ u8 fr_sof; /* start of frame delimiter */
|
||||
+ u8 fr_eof; /* end of frame delimiter */
|
||||
u8 fr_flags; /* flags - see below */
|
||||
u8 granted_mac[ETH_ALEN]; /* FCoE MAC address */
|
||||
};
|
||||
@@ -12,3 +12,4 @@
|
||||
11-ptp-flogi-recv
|
||||
12-ptp-npiv
|
||||
13-ptp-acc
|
||||
14-fc-frame-sparse-workaround
|
||||
|
||||
@@ -12,3 +12,4 @@
|
||||
11-ptp-flogi-recv
|
||||
12-ptp-npiv
|
||||
13-ptp-acc
|
||||
14-fc-frame-sparse-workaround
|
||||
|
||||
Reference in New Issue
Block a user