diff --git a/patches.suse/s390-lcs-Fix-return-type-of-lcs_start_xmit.patch b/patches.suse/s390-lcs-Fix-return-type-of-lcs_start_xmit.patch new file mode 100644 index 0000000..9446227 --- /dev/null +++ b/patches.suse/s390-lcs-Fix-return-type-of-lcs_start_xmit.patch @@ -0,0 +1,64 @@ +From: Nathan Chancellor +Date: Thu, 3 Nov 2022 10:01:30 -0700 +Subject: s390/lcs: Fix return type of lcs_start_xmit() +Git-commit: bb16db8393658e0978c3f0d30ae069e878264fa3 +Patch-mainline: v6.2-rc1 +References: git-fixes bsc#1211690 + +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/lcs.c:2090: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 = lcs_start_xmit, + ^~~~~~~~~~~~~~ + drivers/s390/net/lcs.c:2097: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 = lcs_start_xmit, + ^~~~~~~~~~~~~~ + +->ndo_start_xmit() in 'struct net_device_ops' expects a return type of +'netdev_tx_t', not 'int'. Adjust the return type of lcs_start_xmit() to +match the prototype's to resolve the warning and potential CFI failure, +should s390 select ARCH_SUPPORTS_CFI_CLANG in the future. + +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/lcs.c | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c +index 84c8981317b4..38f312664ce7 100644 +--- a/drivers/s390/net/lcs.c ++++ b/drivers/s390/net/lcs.c +@@ -1519,9 +1519,8 @@ lcs_txbuffer_cb(struct lcs_channel *channel, struct lcs_buffer *buffer) + /** + * Packet transmit function called by network stack + */ +-static int +-__lcs_start_xmit(struct lcs_card *card, struct sk_buff *skb, +- struct net_device *dev) ++static netdev_tx_t __lcs_start_xmit(struct lcs_card *card, struct sk_buff *skb, ++ struct net_device *dev) + { + struct lcs_header *header; + int rc = NETDEV_TX_OK; +@@ -1582,8 +1581,7 @@ __lcs_start_xmit(struct lcs_card *card, struct sk_buff *skb, + return rc; + } + +-static int +-lcs_start_xmit(struct sk_buff *skb, struct net_device *dev) ++static netdev_tx_t lcs_start_xmit(struct sk_buff *skb, struct net_device *dev) + { + struct lcs_card *card; + int rc; + diff --git a/series.conf b/series.conf index a089fa2..5ec37fd 100644 --- a/series.conf +++ b/series.conf @@ -17950,6 +17950,7 @@ 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/s390-lcs-Fix-return-type-of-lcs_start_xmit.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