On Tue, 2023-03-07 at 00:11 -0500, Joel Fernandes wrote: > Do you mind sharing which tree you are looking at? I checked both > 6.3-rc1 and linux-next. > > Your grep returned: > > kernel/trace/trace_osnoise.c: kvfree_rcu(inst); > kernel/trace/trace_probe.c: kvfree_rcu(link); > lib/test_vmalloc.c: kvfree_rcu(p); > mm/list_lru.c: * We need kvfree_rcu() here. And the walking of the list > net/core/pktgen.c: /* Don't need rcu_barrier() due to use of kfree_rcu() */ > net/core/sysctl_net_core.c: > kvfree_rcu(orig_sock_table); > net/core/sysctl_net_core.c: kfree_rcu(cur); > net/mac802154/scan.c: kfree_rcu(request); > net/mac802154/scan.c: kfree_rcu(request); rather old. I'm not subscribed and haven't been following much. Add linux-next specific files for 20230217 Updating to today's next: Add linux-next specific files for 20230307 I get several instances: $ git grep -P '\bkv?free_rcu\s*\(' -- '*.[ch]' | grep -v -P 'kv?free_rcu\s*\([^,]+,.*\)' drivers/block/drbd/drbd_nl.c: kvfree_rcu(old_disk_conf); drivers/block/drbd/drbd_nl.c: kvfree_rcu(old_net_conf); drivers/block/drbd/drbd_nl.c: kvfree_rcu(old_disk_conf); drivers/block/drbd/drbd_receiver.c: kvfree_rcu(old_net_conf); drivers/block/drbd/drbd_receiver.c: kvfree_rcu(old_disk_conf); drivers/block/drbd/drbd_state.c: kvfree_rcu(old_conf); drivers/infiniband/core/device.c: kfree_rcu(container_of(dev->port_data, struct ib_port_data_rcu, drivers/infiniband/core/rdma_core.c: * kfree_rcu(). However the object may still have been released and drivers/infiniband/sw/rxe/rxe_mr.c: kfree_rcu(mr); drivers/misc/vmw_vmci/vmci_context.c: kvfree_rcu(notifier); drivers/misc/vmw_vmci/vmci_event.c: kvfree_rcu(s); drivers/net/ethernet/mellanox/mlx5/core/en/tc/int_port.c: kfree_rcu(int_port); drivers/net/ethernet/mellanox/mlx5/core/en_accel/macsec.c: kfree_rcu(tx_sa); drivers/net/ethernet/mellanox/mlx5/core/en_accel/macsec.c: kfree_rcu(rx_sc); drivers/target/target_core_configfs.c: * callbacks to complete post kfree_rcu(), before allowing fs/ext4/super.c: kfree_rcu(qname); include/linux/rcupdate.h: * kvfree_rcu(ptr); include/linux/rcupdate.h:#define kvfree_rcu(...) KVFREE_GET_MACRO(__VA_ARGS__, \ include/linux/rcutiny.h: // kvfree_rcu(one_arg) call. include/rdma/ib_verbs.h: struct rcu_head rcu; /* kfree_rcu() overhead */ include/scsi/scsi_device.h: * @rcu: For kfree_rcu(). kernel/rcu/rcuscale.c: pr_alert("CONFIG_RCU_LAZY is disabled, falling back to kfree_rcu() for delayed RCU kfree'ing\n"); kernel/rcu/tree.c: * struct kvfree_rcu_bulk_data - single block to store kvfree_rcu() pointers kernel/rcu/tree.c: * @records: Array of the kvfree_rcu() pointers kernel/rcu/tree.c: * struct kfree_rcu_cpu_work - single batch of kfree_rcu() requests kernel/rcu/tree.c: * @head_free: List of kfree_rcu() objects waiting for a grace period kernel/rcu/tree.c: * @bulk_head_free: Bulk-List of kvfree_rcu() objects waiting for a grace period kernel/rcu/tree.c: * struct kfree_rcu_cpu - batch up kfree_rcu() requests for RCU grace period kernel/rcu/tree.c: * @head: List of kfree_rcu() objects not yet waiting for a grace period kernel/rcu/tree.c: * @bulk_head: Bulk-List of kvfree_rcu() objects not yet waiting for a grace period kernel/rcu/tree.c: * @krw_arr: Array of batches of kfree_rcu() objects waiting for a grace period kernel/rcu/tree.c: * double-argument of kvfree_rcu(). This happens when the kernel/rcu/tree.c: * reduce the number of grace periods during heavy kfree_rcu()/kvfree_rcu() load. kernel/rcu/tree.c: // Probable double kfree_rcu(), just leak. kernel/trace/trace_osnoise.c: kvfree_rcu(inst); kernel/trace/trace_probe.c: kvfree_rcu(link); net/core/pktgen.c: /* Don't need rcu_barrier() due to use of kfree_rcu() */ net/core/sysctl_net_core.c: kvfree_rcu(orig_sock_table); net/core/sysctl_net_core.c: kfree_rcu(cur);