From 7d05b8eaea9d2c77bde2a4b8433b97124a935dda Mon Sep 17 00:00:00 2001 From: gleb-kun <94681073+gleb-kun@users.noreply.github.com> Date: Tue, 11 Feb 2025 14:38:11 +0300 Subject: [PATCH] Update vmnetInt.h & bridge.c --- vmnet-only/bridge.c | 22 +++++++++++----------- vmnet-only/vmnetInt.h | 4 ++-- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/vmnet-only/bridge.c b/vmnet-only/bridge.c index 4c139570..5e7c38e8 100644 --- a/vmnet-only/bridge.c +++ b/vmnet-only/bridge.c @@ -584,10 +584,10 @@ VNetBridgeReceiveFromVNet(VNetJack *this, // IN: jack * and the packet size is not too big. */ - dev_lock_list(); + read_lock_list(); if (MAC_EQ(dest, dev->dev_addr) || skb->len > dev->mtu + dev->hard_header_len) { - dev_unlock_list(); + read_unlock_list(); } else { # if 0 // XXX we should do header translation if ((dev->flags & IFF_SOFTHEADERS) != 0) { @@ -607,15 +607,15 @@ VNetBridgeReceiveFromVNet(VNetJack *this, // IN: jack # endif clone = skb_clone(skb, GFP_ATOMIC); if (clone == NULL) { - dev_unlock_list(); + read_unlock_list(); } else { skb_set_owner_w(clone, bridge->sk); clone->protocol = ((struct ethhdr *)skb->data)->h_proto; // XXX if ((dev->flags & IFF_UP) != 0) { - dev_unlock_list(); + read_unlock_list(); DEV_QUEUE_XMIT(clone, dev, 0); } else { - dev_unlock_list(); + read_unlock_list(); dev_kfree_skb(clone); } } @@ -899,19 +899,19 @@ VNetBridgeUp(VNetBridge *bridge, // IN: bridge struct * Get peer device structure */ - dev_lock_list(); + read_lock_list(); bridge->dev = __dev_get_by_name(&init_net, bridge->name); LOG(2, (KERN_DEBUG "bridge-%s: got dev %p\n", bridge->name, bridge->dev)); if (bridge->dev == NULL) { - dev_unlock_list(); + read_unlock_list(); retval = -ENODEV; goto out; } if (!(bridge->dev->flags & IFF_UP)) { LOG(2, (KERN_DEBUG "bridge-%s: interface %s is not up\n", bridge->name, bridge->dev->name)); - dev_unlock_list(); + read_unlock_list(); retval = -ENODEV; goto out; } @@ -919,7 +919,7 @@ VNetBridgeUp(VNetBridge *bridge, // IN: bridge struct LOG(1, (KERN_DEBUG "bridge-%s: can't bridge with %s (header length %d, " "type %d).\n", bridge->name, bridge->dev->name, bridge->dev->hard_header_len, bridge->dev->type)); - dev_unlock_list(); + read_unlock_list(); retval = -EINVAL; goto out; } @@ -933,7 +933,7 @@ VNetBridgeUp(VNetBridge *bridge, // IN: bridge struct bridge->sk = compat_sk_alloc(bridge, GFP_ATOMIC); if (bridge->sk == NULL) { - dev_unlock_list(); + read_unlock_list(); retval = -ENOMEM; goto out; } @@ -973,7 +973,7 @@ VNetBridgeUp(VNetBridge *bridge, // IN: bridge struct bridge->pt.af_packet_priv = bridge->sk; bridge->enabledPromisc = FALSE; dev_add_pack(&bridge->pt); - dev_unlock_list(); + read_unlock_list(); /* * Put in promiscuous mode if need be. diff --git a/vmnet-only/vmnetInt.h b/vmnet-only/vmnetInt.h index b49c3990..520142dd 100644 --- a/vmnet-only/vmnetInt.h +++ b/vmnet-only/vmnetInt.h @@ -41,8 +41,8 @@ compat_skb_set_network_header(skb, sizeof (struct ethhdr)), \ dev_queue_xmit(skb) \ ) -#define dev_lock_list() read_lock(&dev_base_lock) -#define dev_unlock_list() read_unlock(&dev_base_lock) +#define read_lock_list() rcu_read_lock() +#define read_unlock_list() rcu_read_unlock() extern struct proto vmnet_proto;