lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20260128-can_skb_ext-v1-2-71b8bcbfd8cf@hartkopp.net>
Date: Wed, 28 Jan 2026 22:10:52 +0100
From: Oliver Hartkopp via B4 Relay <devnull+socketcan.hartkopp.net@...nel.org>
To: netdev@...r.kernel.org, linux-can@...r.kernel.org
Cc: Oliver Hartkopp <socketcan@...tkopp.net>
Subject: [PATCH net-next V3 2/7] can: use netdev_put() instead of
 deprecated dev_put()

From: Oliver Hartkopp <socketcan@...tkopp.net>

Checkpatch complained about using dev_put() in the following patch of this
series. Prepare the CAN subsystem to use netdev_put() consistently.

Signed-off-by: Oliver Hartkopp <socketcan@...tkopp.net>
---
 net/can/bcm.c          | 18 +++++++++---------
 net/can/isotp.c        | 18 +++++++++---------
 net/can/j1939/main.c   |  6 +++---
 net/can/j1939/socket.c |  8 ++++----
 net/can/raw.c          |  6 +++---
 5 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/net/can/bcm.c b/net/can/bcm.c
index 8ed60f18c2eaff7053cb2c76e5e4cf1124dd3ac5..f76d60252803e62f438fd1936f366008698172e7 100644
--- a/net/can/bcm.c
+++ b/net/can/bcm.c
@@ -339,11 +339,11 @@ static void bcm_can_tx(struct bcm_op *op)
 	if (op->count > 0)
 		op->count--;
 
 	spin_unlock_bh(&op->bcm_tx_lock);
 out:
-	dev_put(dev);
+	netdev_put(dev);
 }
 
 /*
  * bcm_send_to_user - send a BCM message to the userspace
  *                    (consisting of bcm_msg_head + x CAN frames)
@@ -852,11 +852,11 @@ static int bcm_delete_rx_op(struct list_head *ops, struct bcm_msg_head *mh,
 
 					dev = dev_get_by_index(sock_net(op->sk),
 							       op->ifindex);
 					if (dev) {
 						bcm_rx_unreg(dev, op);
-						dev_put(dev);
+						netdev_put(dev);
 					}
 				}
 			} else
 				can_rx_unregister(sock_net(op->sk), NULL,
 						  op->can_id,
@@ -1290,11 +1290,11 @@ static int bcm_rx_setup(struct bcm_msg_head *msg_head, struct msghdr *msg,
 						      REGMASK(op->can_id),
 						      bcm_rx_handler, op,
 						      "bcm", sk);
 
 				op->rx_reg_dev = dev;
-				dev_put(dev);
+				netdev_put(dev);
 			}
 
 		} else
 			err = can_rx_register(sock_net(sk), NULL, op->can_id,
 					      REGMASK(op->can_id),
@@ -1344,11 +1344,11 @@ static int bcm_tx_send(struct msghdr *msg, int ifindex, struct sock *sk,
 
 	can_skb_prv(skb)->ifindex = dev->ifindex;
 	skb->dev = dev;
 	can_skb_set_owner(skb, sk);
 	err = can_send(skb, 1); /* send with loopback */
-	dev_put(dev);
+	netdev_put(dev);
 
 	if (err)
 		return err;
 
 	return cfsiz + MHSIZ;
@@ -1403,15 +1403,15 @@ static int bcm_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
 			dev = dev_get_by_index(sock_net(sk), ifindex);
 			if (!dev)
 				return -ENODEV;
 
 			if (dev->type != ARPHRD_CAN) {
-				dev_put(dev);
+				netdev_put(dev);
 				return -ENODEV;
 			}
 
-			dev_put(dev);
+			netdev_put(dev);
 		}
 	}
 
 	lock_sock(sk);
 
@@ -1622,11 +1622,11 @@ static int bcm_release(struct socket *sock)
 				struct net_device *dev;
 
 				dev = dev_get_by_index(net, op->ifindex);
 				if (dev) {
 					bcm_rx_unreg(dev, op);
-					dev_put(dev);
+					netdev_put(dev);
 				}
 			}
 		} else
 			can_rx_unregister(net, NULL, op->can_id,
 					  REGMASK(op->can_id),
@@ -1682,17 +1682,17 @@ static int bcm_connect(struct socket *sock, struct sockaddr_unsized *uaddr, int
 		if (!dev) {
 			ret = -ENODEV;
 			goto fail;
 		}
 		if (dev->type != ARPHRD_CAN) {
-			dev_put(dev);
+			netdev_put(dev);
 			ret = -ENODEV;
 			goto fail;
 		}
 
 		bo->ifindex = dev->ifindex;
-		dev_put(dev);
+		netdev_put(dev);
 
 	} else {
 		/* no interface reference for ifindex = 0 ('any' CAN device) */
 		bo->ifindex = 0;
 	}
diff --git a/net/can/isotp.c b/net/can/isotp.c
index 4bb60b8f9b96188a328e77be2fdefcb879da1089..b36173db119c85a6ef74a172236c08b372b875a9 100644
--- a/net/can/isotp.c
+++ b/net/can/isotp.c
@@ -258,11 +258,11 @@ static int isotp_send_fc(struct sock *sk, int ae, u8 flowstatus)
 	can_send_ret = can_send(nskb, 1);
 	if (can_send_ret)
 		pr_notice_once("can-isotp: %s: can_send_ret %pe\n",
 			       __func__, ERR_PTR(can_send_ret));
 
-	dev_put(dev);
+	netdev_put(dev);
 
 	/* reset blocksize counter */
 	so->rx.bs = 0;
 
 	/* reset last CF frame rx timestamp for rx stmin enforcement */
@@ -771,11 +771,11 @@ static void isotp_send_cframe(struct isotp_sock *so)
 	if (!dev)
 		return;
 
 	skb = alloc_skb(so->ll.mtu + sizeof(struct can_skb_priv), GFP_ATOMIC);
 	if (!skb) {
-		dev_put(dev);
+		netdev_put(dev);
 		return;
 	}
 
 	can_skb_reserve(skb);
 	can_skb_prv(skb)->ifindex = dev->ifindex;
@@ -809,11 +809,11 @@ static void isotp_send_cframe(struct isotp_sock *so)
 		pr_notice_once("can-isotp: %s: can_send_ret %pe\n",
 			       __func__, ERR_PTR(can_send_ret));
 		if (can_send_ret == -ENOBUFS)
 			pr_notice_once("can-isotp: tx queue is full\n");
 	}
-	dev_put(dev);
+	netdev_put(dev);
 }
 
 static void isotp_create_fframe(struct canfd_frame *cf, struct isotp_sock *so,
 				int ae)
 {
@@ -999,11 +999,11 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
 	}
 
 	skb = sock_alloc_send_skb(sk, so->ll.mtu + sizeof(struct can_skb_priv),
 				  msg->msg_flags & MSG_DONTWAIT, &err);
 	if (!skb) {
-		dev_put(dev);
+		netdev_put(dev);
 		goto err_out_drop;
 	}
 
 	can_skb_reserve(skb);
 	can_skb_prv(skb)->ifindex = dev->ifindex;
@@ -1081,11 +1081,11 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
 	cf->flags = so->ll.tx_flags;
 
 	skb->dev = dev;
 	skb->sk = sk;
 	err = can_send(skb, 1);
-	dev_put(dev);
+	netdev_put(dev);
 	if (err) {
 		pr_notice_once("can-isotp: %s: can_send_ret %pe\n",
 			       __func__, ERR_PTR(err));
 
 		/* no transmission -> no timeout monitoring */
@@ -1212,11 +1212,11 @@ static int isotp_release(struct socket *sock)
 							  isotp_rcv, sk);
 
 				can_rx_unregister(net, dev, so->txid,
 						  SINGLE_MASK(so->txid),
 						  isotp_rcv_echo, sk);
-				dev_put(dev);
+				netdev_put(dev);
 				synchronize_rcu();
 			}
 		}
 	}
 
@@ -1304,16 +1304,16 @@ static int isotp_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int l
 	if (!dev) {
 		err = -ENODEV;
 		goto out;
 	}
 	if (dev->type != ARPHRD_CAN) {
-		dev_put(dev);
+		netdev_put(dev);
 		err = -ENODEV;
 		goto out;
 	}
 	if (READ_ONCE(dev->mtu) < so->ll.mtu) {
-		dev_put(dev);
+		netdev_put(dev);
 		err = -EINVAL;
 		goto out;
 	}
 	if (!(dev->flags & IFF_UP))
 		notify_enetdown = 1;
@@ -1329,11 +1329,11 @@ static int isotp_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int l
 
 	/* register for echo skb's */
 	can_rx_register(net, dev, tx_id, SINGLE_MASK(tx_id),
 			isotp_rcv_echo, sk, "isotpe", sk);
 
-	dev_put(dev);
+	netdev_put(dev);
 
 	/* switch to new settings */
 	so->ifindex = ifindex;
 	so->rxid = rx_id;
 	so->txid = tx_id;
diff --git a/net/can/j1939/main.c b/net/can/j1939/main.c
index a93af55df5fd500fa5d564160ad563a3883d2eac..dadf5be529070dcb4c077e68049e091511ef5361 100644
--- a/net/can/j1939/main.c
+++ b/net/can/j1939/main.c
@@ -161,11 +161,11 @@ static void __j1939_priv_release(struct kref *kref)
 
 	WARN_ON_ONCE(!list_empty(&priv->active_session_list));
 	WARN_ON_ONCE(!list_empty(&priv->ecus));
 	WARN_ON_ONCE(!list_empty(&priv->j1939_socks));
 
-	dev_put(ndev);
+	netdev_put(ndev);
 	kfree(priv);
 }
 
 void j1939_priv_put(struct j1939_priv *priv)
 {
@@ -279,11 +279,11 @@ struct j1939_priv *j1939_netdev_start(struct net_device *ndev)
 		/* Someone was faster than us, use their priv and roll
 		 * back our's.
 		 */
 		kref_get(&priv_new->rx_kref);
 		mutex_unlock(&j1939_netdev_lock);
-		dev_put(ndev);
+		netdev_put(ndev);
 		kfree(priv);
 		return priv_new;
 	}
 	j1939_priv_set(ndev, priv);
 
@@ -296,11 +296,11 @@ struct j1939_priv *j1939_netdev_start(struct net_device *ndev)
 
  out_priv_put:
 	j1939_priv_set(ndev, NULL);
 	mutex_unlock(&j1939_netdev_lock);
 
-	dev_put(ndev);
+	netdev_put(ndev);
 	kfree(priv);
 
 	return ERR_PTR(ret);
 }
 
diff --git a/net/can/j1939/socket.c b/net/can/j1939/socket.c
index 1589e8ca634ecc2b59eb0c2a1e48f546fafccbe0..ad188a86790f269b8a9d022e67d0ef3ea8560349 100644
--- a/net/can/j1939/socket.c
+++ b/net/can/j1939/socket.c
@@ -481,30 +481,30 @@ static int j1939_sk_bind(struct socket *sock, struct sockaddr_unsized *uaddr, in
 			ret = -ENODEV;
 			goto out_release_sock;
 		}
 
 		if (ndev->reg_state != NETREG_REGISTERED) {
-			dev_put(ndev);
+			netdev_put(ndev);
 			ret = -ENODEV;
 			goto out_release_sock;
 		}
 
 		can_ml = can_get_ml_priv(ndev);
 		if (!can_ml) {
-			dev_put(ndev);
+			netdev_put(ndev);
 			ret = -ENODEV;
 			goto out_release_sock;
 		}
 
 		if (!(ndev->flags & IFF_UP)) {
-			dev_put(ndev);
+			netdev_put(ndev);
 			ret = -ENETDOWN;
 			goto out_release_sock;
 		}
 
 		priv = j1939_netdev_start(ndev);
-		dev_put(ndev);
+		netdev_put(ndev);
 		if (IS_ERR(priv)) {
 			ret = PTR_ERR(priv);
 			goto out_release_sock;
 		}
 
diff --git a/net/can/raw.c b/net/can/raw.c
index fb4f9c854df04d90ed6bd4601c616ac39bb85ad9..cf217671d9ce9419c5e32f926bf64df5f95e4a1f 100644
--- a/net/can/raw.c
+++ b/net/can/raw.c
@@ -518,11 +518,11 @@ static int raw_bind(struct socket *sock, struct sockaddr_unsized *uaddr, int len
 			netdev_hold(ro->dev, &ro->dev_tracker, GFP_KERNEL);
 	}
 
 out_put_dev:
 	/* remove potential reference from dev_get_by_index() */
-	dev_put(dev);
+	netdev_put(dev);
 out:
 	release_sock(sk);
 	rtnl_unlock();
 
 	if (notify_enetdown) {
@@ -989,21 +989,21 @@ static int raw_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
 
 	skb_setup_tx_timestamp(skb, &sockc);
 
 	err = can_send(skb, ro->loopback);
 
-	dev_put(dev);
+	netdev_put(dev);
 
 	if (err)
 		goto send_failed;
 
 	return size;
 
 free_skb:
 	kfree_skb(skb);
 put_dev:
-	dev_put(dev);
+	netdev_put(dev);
 send_failed:
 	return err;
 }
 
 static int raw_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,

-- 
2.47.3



Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ