Commit b7759904 authored by Nathan Huckleberry's avatar Nathan Huckleberry Committed by Greg Kroah-Hartman

staging: octeon: Fix return type of cvm_oct_xmit and cvm_oct_xmit_pow

The ndo_start_xmit field in net_device_ops is expected to be of type
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *skb, struct net_device *dev).

The mismatched return type breaks forward edge kCFI since the underlying
function definition does not match the function hook definition.

The return type of cvm_oct_xmit and cvm_oct_xmit_pow should be changed
from int to netdev_tx_t.

Link: https://github.com/ClangBuiltLinux/linux/issues/1703
Cc: llvm@lists.linux.dev
Reported-by: default avatarDan Carpenter <error27@gmail.com>
Reviewed-by: default avatarNathan Chancellor <nathan@kernel.org>
Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarNathan Huckleberry <nhuck@google.com>
Link: https://lore.kernel.org/r/20220914211057.423617-1-nhuck@google.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 9fabdbe8
...@@ -125,7 +125,7 @@ static void cvm_oct_free_tx_skbs(struct net_device *dev) ...@@ -125,7 +125,7 @@ static void cvm_oct_free_tx_skbs(struct net_device *dev)
* *
* Returns Always returns NETDEV_TX_OK * Returns Always returns NETDEV_TX_OK
*/ */
int cvm_oct_xmit(struct sk_buff *skb, struct net_device *dev) netdev_tx_t cvm_oct_xmit(struct sk_buff *skb, struct net_device *dev)
{ {
union cvmx_pko_command_word0 pko_command; union cvmx_pko_command_word0 pko_command;
union cvmx_buf_ptr hw_buffer; union cvmx_buf_ptr hw_buffer;
...@@ -506,7 +506,7 @@ int cvm_oct_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -506,7 +506,7 @@ int cvm_oct_xmit(struct sk_buff *skb, struct net_device *dev)
* @dev: Device info structure * @dev: Device info structure
* Returns Always returns zero * Returns Always returns zero
*/ */
int cvm_oct_xmit_pow(struct sk_buff *skb, struct net_device *dev) netdev_tx_t cvm_oct_xmit_pow(struct sk_buff *skb, struct net_device *dev)
{ {
struct octeon_ethernet *priv = netdev_priv(dev); struct octeon_ethernet *priv = netdev_priv(dev);
void *packet_buffer; void *packet_buffer;
......
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
* Copyright (c) 2003-2007 Cavium Networks * Copyright (c) 2003-2007 Cavium Networks
*/ */
int cvm_oct_xmit(struct sk_buff *skb, struct net_device *dev); netdev_tx_t cvm_oct_xmit(struct sk_buff *skb, struct net_device *dev);
int cvm_oct_xmit_pow(struct sk_buff *skb, struct net_device *dev); netdev_tx_t cvm_oct_xmit_pow(struct sk_buff *skb, struct net_device *dev);
int cvm_oct_transmit_qos(struct net_device *dev, void *work_queue_entry, int cvm_oct_transmit_qos(struct net_device *dev, void *work_queue_entry,
int do_free, int qos); int do_free, int qos);
void cvm_oct_tx_initialize(void); void cvm_oct_tx_initialize(void);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment