diff --git a/patches.suse/s390-netiucv-Fix-return-type-of-netiucv_tx.patch b/patches.suse/s390-netiucv-Fix-return-type-of-netiucv_tx.patch new file mode 100644 index 0000000..bdbec5f --- /dev/null +++ b/patches.suse/s390-netiucv-Fix-return-type-of-netiucv_tx.patch @@ -0,0 +1,59 @@ +From: Nathan Chancellor +Date: Thu, 3 Nov 2022 10:01:29 -0700 +Subject: s390/netiucv: Fix return type of netiucv_tx() +Git-commit: 88d86d18d7cf7e9137c95f9d212bb9fff8a1b4be +Patch-mainline: v6.2-rc1 +References: git-fixes bsc#1211692 + +With clang's kernel control flow integrity (kCFI, CONFIG_CFI_CLANG), +indirect call targets are validated against the expected function +pointer prototype to make sure the call target is valid to help mitigate +ROP attacks. If they are not identical, there is a failure at run time, +which manifests as either a kernel panic or thread getting killed. A +proposed warning in clang aims to catch these at compile time, which +reveals: + + drivers/s390/net/netiucv.c:1854:21: error: incompatible function pointer types initializing 'netdev_tx_t (*)(struct sk_buff *, struct net_device *)' (aka 'enum netdev_tx (*)(struct sk_buff *, struct net_device *)') with an expression of type 'int (struct sk_buff *, struct net_device *)' [-Werror,-Wincompatible-function-pointer-types-strict] + .ndo_start_xmit = netiucv_tx, + ^~~~~~~~~~ + +->ndo_start_xmit() in 'struct net_device_ops' expects a return type of +'netdev_tx_t', not 'int'. Adjust the return type of netiucv_tx() to +match the prototype's to resolve the warning and potential CFI failure, +should s390 select ARCH_SUPPORTS_CFI_CLANG in the future. + +Additionally, while in the area, remove a comment block that is no +longer relevant. + +Link: https://github.com/ClangBuiltLinux/linux/issues/1750 +Reviewed-by: Alexandra Winter +Reviewed-by: Kees Cook +Signed-off-by: Nathan Chancellor +Signed-off-by: David S. Miller +Acked-by: Miroslav Franc +--- + drivers/s390/net/netiucv.c | 9 +-------- + 1 file changed, 1 insertion(+), 8 deletions(-) + +diff --git a/drivers/s390/net/netiucv.c b/drivers/s390/net/netiucv.c +index 65aa0a96c21d..66076cada8ae 100644 +--- a/drivers/s390/net/netiucv.c ++++ b/drivers/s390/net/netiucv.c +@@ -1248,15 +1248,8 @@ static int netiucv_close(struct net_device *dev) + /** + * Start transmission of a packet. + * Called from generic network device layer. +- * +- * @param skb Pointer to buffer containing the packet. +- * @param dev Pointer to interface struct. +- * +- * @return 0 if packet consumed, !0 if packet rejected. +- * Note: If we return !0, then the packet is free'd by +- * the generic network layer. + */ +-static int netiucv_tx(struct sk_buff *skb, struct net_device *dev) ++static netdev_tx_t netiucv_tx(struct sk_buff *skb, struct net_device *dev) + { + struct netiucv_priv *privptr = netdev_priv(dev); + int rc; + diff --git a/series.conf b/series.conf index 6620c46..a089fa2 100644 --- a/series.conf +++ b/series.conf @@ -17949,6 +17949,7 @@ patches.suse/net-mana-Assign-interrupts-to-CPUs-based-on-NUMA-nod.patch patches.suse/hamradio-baycom_epp-Fix-return-type-of-baycom_send_p.patch patches.suse/s390-ctcm-Fix-return-type-of-ctc-mp-m_tx.patch + patches.suse/s390-netiucv-Fix-return-type-of-netiucv_tx.patch patches.suse/gve-Fix-error-return-code-in-gve_prefill_rx_pages.patch patches.suse/net-mana-Add-support-for-auxiliary-device.patch patches.suse/net-mana-Record-the-physical-address-for-doorbell-pa.patch