All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/2] staging: rtl8723bs: Fix return type for implementation of ndo_start_xmit
@ 2022-09-09  8:20 GUO Zihua
  2022-09-09  8:20 ` [PATCH v4 1/2] staging: rtl8723bs: Delete un-necessary return for _rtw_xmit_entry() GUO Zihua
  2022-09-09  8:20 ` [PATCH v4 2/2] staging: rtl8723bs: Fix return type for implementation of ndo_start_xmit GUO Zihua
  0 siblings, 2 replies; 3+ messages in thread
From: GUO Zihua @ 2022-09-09  8:20 UTC (permalink / raw)
  To: gregkh; +Cc: linux-staging

Fix the return type for implementation of ndo_start_xmit to avoid CFI
failure

GUO Zihua (2):
  staging: rtl8723bs: Delete un-necessary return for _rtw_xmit_entry()
  staging: rtl8723bs: Fix return type for implementation of
    ndo_start_xmit

 drivers/staging/rtl8723bs/include/xmit_osdep.h  |  4 ++--
 .../staging/rtl8723bs/os_dep/ioctl_cfg80211.c   |  3 ++-
 drivers/staging/rtl8723bs/os_dep/xmit_linux.c   | 17 ++++++-----------
 3 files changed, 10 insertions(+), 14 deletions(-)

---

v4:
  Remove the un-necessary return of _rtw_xmit_entry, and add a Fixes tag
for the second patch.

v3:
  Provide detail on CFI.

v2:
  Fix truncated subject.

-- 
2.17.1


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH v4 1/2] staging: rtl8723bs: Delete un-necessary return for _rtw_xmit_entry()
  2022-09-09  8:20 [PATCH v4 0/2] staging: rtl8723bs: Fix return type for implementation of ndo_start_xmit GUO Zihua
@ 2022-09-09  8:20 ` GUO Zihua
  2022-09-09  8:20 ` [PATCH v4 2/2] staging: rtl8723bs: Fix return type for implementation of ndo_start_xmit GUO Zihua
  1 sibling, 0 replies; 3+ messages in thread
From: GUO Zihua @ 2022-09-09  8:20 UTC (permalink / raw)
  To: gregkh; +Cc: linux-staging

As _rtw_xmit_entry() would always return 0, we are save to delete the
return value for it.

Signed-off-by: GUO Zihua <guozihua@huawei.com>
---
 drivers/staging/rtl8723bs/include/xmit_osdep.h    |  2 +-
 drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c |  3 ++-
 drivers/staging/rtl8723bs/os_dep/xmit_linux.c     | 15 +++++----------
 3 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/drivers/staging/rtl8723bs/include/xmit_osdep.h b/drivers/staging/rtl8723bs/include/xmit_osdep.h
index e781cd5dfd01..3c1391aef093 100644
--- a/drivers/staging/rtl8723bs/include/xmit_osdep.h
+++ b/drivers/staging/rtl8723bs/include/xmit_osdep.h
@@ -25,7 +25,7 @@ struct sta_xmit_priv;
 struct xmit_frame;
 struct xmit_buf;
 
-extern int _rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev);
+extern void _rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev);
 extern int rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev);
 
 void rtw_os_xmit_schedule(struct adapter *padapter);
diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
index cb6d287f580d..c97135185c71 100644
--- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
+++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
@@ -2084,7 +2084,8 @@ static netdev_tx_t rtw_cfg80211_monitor_if_xmit_entry(struct sk_buff *skb, struc
 		memcpy(pdata + sizeof(dst_mac_addr), src_mac_addr, sizeof(src_mac_addr));
 
 		/* Use the real net device to transmit the packet */
-		return _rtw_xmit_entry(skb, padapter->pnetdev);
+		_rtw_xmit_entry(skb, padapter->pnetdev);
+		return NETDEV_TX_OK;
 
 	} else if ((frame_control & (IEEE80211_FCTL_FTYPE|IEEE80211_FCTL_STYPE)) ==
 		   (IEEE80211_FTYPE_MGMT|IEEE80211_STYPE_ACTION)) {
diff --git a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c b/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
index 530e7a6c67c5..2b268aab4f88 100644
--- a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
+++ b/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
@@ -181,7 +181,7 @@ static int rtw_mlcst2unicst(struct adapter *padapter, struct sk_buff *skb)
 	return true;
 }
 
-int _rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev)
+void _rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev)
 {
 	struct adapter *padapter = rtw_netdev_priv(pnetdev);
 	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
@@ -202,7 +202,7 @@ int _rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev)
 		if (pxmitpriv->free_xmitframe_cnt > (NR_XMITFRAME / 4)) {
 			res = rtw_mlcst2unicst(padapter, pkt);
 			if (res)
-				goto exit;
+				return;
 		}
 	}
 
@@ -210,22 +210,17 @@ int _rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev)
 	if (res < 0)
 		goto drop_packet;
 
-	goto exit;
+	return;
 
 drop_packet:
 	pxmitpriv->tx_drop++;
 	dev_kfree_skb_any(pkt);
-
-exit:
-	return 0;
 }
 
 int rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev)
 {
-	int ret = 0;
-
 	if (pkt)
-		ret = _rtw_xmit_entry(pkt, pnetdev);
+		_rtw_xmit_entry(pkt, pnetdev);
 
-	return ret;
+	return 0;
 }
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH v4 2/2] staging: rtl8723bs: Fix return type for implementation of ndo_start_xmit
  2022-09-09  8:20 [PATCH v4 0/2] staging: rtl8723bs: Fix return type for implementation of ndo_start_xmit GUO Zihua
  2022-09-09  8:20 ` [PATCH v4 1/2] staging: rtl8723bs: Delete un-necessary return for _rtw_xmit_entry() GUO Zihua
@ 2022-09-09  8:20 ` GUO Zihua
  1 sibling, 0 replies; 3+ messages in thread
From: GUO Zihua @ 2022-09-09  8:20 UTC (permalink / raw)
  To: gregkh; +Cc: linux-staging

CFI (Control Flow Integrity) is a safety feature allowing the system to
detect and react should a potential control flow hijacking occurs. In
particular, the Forward-Edge CFI protects indirect function calls by
ensuring the prototype of function that is actually called matches the
definition of the function hook.

Since Linux now supports CFI, it will be a good idea to fix mismatched
return type for implementation of hooks. Otherwise this would get
cought out by CFI and cause a panic.

Use enums from netdev_tx_t as return value instead. Then change return
type to netdev_tx_t.

Fixes: cf68fffb66d6 ("add support for Clang CFI")
Signed-off-by: GUO Zihua <guozihua@huawei.com>
---
 drivers/staging/rtl8723bs/include/xmit_osdep.h | 2 +-
 drivers/staging/rtl8723bs/os_dep/xmit_linux.c  | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/rtl8723bs/include/xmit_osdep.h b/drivers/staging/rtl8723bs/include/xmit_osdep.h
index 3c1391aef093..8704dced593a 100644
--- a/drivers/staging/rtl8723bs/include/xmit_osdep.h
+++ b/drivers/staging/rtl8723bs/include/xmit_osdep.h
@@ -26,7 +26,7 @@ struct xmit_frame;
 struct xmit_buf;
 
 extern void _rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev);
-extern int rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev);
+extern netdev_tx_t rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev);
 
 void rtw_os_xmit_schedule(struct adapter *padapter);
 
diff --git a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c b/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
index 2b268aab4f88..1eeabfffd6d2 100644
--- a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
+++ b/drivers/staging/rtl8723bs/os_dep/xmit_linux.c
@@ -217,10 +217,10 @@ void _rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev)
 	dev_kfree_skb_any(pkt);
 }
 
-int rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev)
+netdev_tx_t rtw_xmit_entry(struct sk_buff *pkt, struct net_device *pnetdev)
 {
 	if (pkt)
 		_rtw_xmit_entry(pkt, pnetdev);
 
-	return 0;
+	return NETDEV_TX_OK;
 }
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-09-09  8:29 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-09  8:20 [PATCH v4 0/2] staging: rtl8723bs: Fix return type for implementation of ndo_start_xmit GUO Zihua
2022-09-09  8:20 ` [PATCH v4 1/2] staging: rtl8723bs: Delete un-necessary return for _rtw_xmit_entry() GUO Zihua
2022-09-09  8:20 ` [PATCH v4 2/2] staging: rtl8723bs: Fix return type for implementation of ndo_start_xmit GUO Zihua

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.