Take struct iscsi_uevent *ev for example:
In 64bit kernel : sizeof(ev->u): 24, sizeof(ev->r): 16,
but in 32bit iscsid: sizeof(ev->u): 20, sizeof(ev->r): 16.

While invoking 32bit "iscsiadm -m node" in 64bit kernel,
we should force ev->u 8byte aligned.

For "64bit iscsiadm + 64bit kernel" or "32bit iscsiadm + 32bit kernel",
they do not need the fix, so conditionally apply the fix patch.
(MLPREFIX is not NULL means multilib).

Signed-off-by: Hongxu Jia <[email protected]>
---
 ...g-32bit-iscsiadm-m-node-failed-in-64bit-k.patch | 34 ++++++++++++++++++++++
 .../iscsi-initiator-utils_2.0-873.bb               |  2 ++
 2 files changed, 36 insertions(+)
 create mode 100644 
meta-networking/recipes-daemons/iscsi-initiator-utils/files/fix-invoking-32bit-iscsiadm-m-node-failed-in-64bit-k.patch

diff --git 
a/meta-networking/recipes-daemons/iscsi-initiator-utils/files/fix-invoking-32bit-iscsiadm-m-node-failed-in-64bit-k.patch
 
b/meta-networking/recipes-daemons/iscsi-initiator-utils/files/fix-invoking-32bit-iscsiadm-m-node-failed-in-64bit-k.patch
new file mode 100644
index 0000000..acb5c80
--- /dev/null
+++ 
b/meta-networking/recipes-daemons/iscsi-initiator-utils/files/fix-invoking-32bit-iscsiadm-m-node-failed-in-64bit-k.patch
@@ -0,0 +1,34 @@
+From 03d6feb19ddaa46f54808a5d327c61bff248a228 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <[email protected]>
+Date: Sun, 4 Dec 2016 01:15:03 -0500
+Subject: [PATCH] fix invoking 32bit "iscsiadm -m node" failed in 64bit kernel
+
+In 64bit kernel : sizeof(ev->u): 24, sizeof(ev->r): 16,
+but in 32bit iscsid: sizeof(ev->u): 20, sizeof(ev->r): 16.
+
+While invoking 32bit "iscsiadm -m node" in 64bit kernel,
+we should force ev->u 8byte aligned.
+
+Upstream-Status: Inappropriate [upstream does not support multilib]
+
+Signed-off-by: Hongxu Jia <[email protected]>
+---
+ include/iscsi_if.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/include/iscsi_if.h b/include/iscsi_if.h
+index dad9fd8..17b6c3d 100644
+--- a/include/iscsi_if.h
++++ b/include/iscsi_if.h
+@@ -219,7 +219,7 @@ struct iscsi_uevent {
+                       uint32_t        host_no;
+                       uint16_t        chap_tbl_idx;
+               } delete_chap;
+-      } u;
++      } __attribute__ ((aligned (sizeof(uint64_t)))) u;
+       union {
+               /* messages k -> u */
+               int                     retcode;
+-- 
+2.8.1
+
diff --git 
a/meta-networking/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_2.0-873.bb
 
b/meta-networking/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_2.0-873.bb
index 4b13155..d3724da 100644
--- 
a/meta-networking/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_2.0-873.bb
+++ 
b/meta-networking/recipes-daemons/iscsi-initiator-utils/iscsi-initiator-utils_2.0-873.bb
@@ -22,7 +22,9 @@ SRC_URI = 
"http://www.open-iscsi.org/bits/open-iscsi-${PV}.tar.gz \
            file://iscsi-initiator.service \
            file://iscsi-initiator-targets.service \
            file://set_initiatorname \
+           ${@base_conditional('MLPREFIX', '', 
'','file://fix-invoking-32bit-iscsiadm-m-node-failed-in-64bit-k.patch', d)} \
 "
+
 SRC_URI[md5sum] = "8b8316d7c9469149a6cc6234478347f7"
 SRC_URI[sha256sum] = 
"7dd9f2f97da417560349a8da44ea4fcfe98bfd5ef284240a2cc4ff8e88ac7cd9"
 
-- 
2.8.1

-- 
_______________________________________________
Openembedded-devel mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-devel

Reply via email to