All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drdb: Switch to kvfree_rcu() API
@ 2021-12-15 11:18 Uladzislau Rezki (Sony)
  2021-12-15 11:18 ` [PATCH RESEND] ext4: Replace ext4_kvfree_array_rcu() by " Uladzislau Rezki (Sony)
                   ` (8 more replies)
  0 siblings, 9 replies; 23+ messages in thread
From: Uladzislau Rezki (Sony) @ 2021-12-15 11:18 UTC (permalink / raw)
  To: LKML, RCU, Paul E . McKenney
  Cc: Michal Hocko, Andrew Morton, Daniel Axtens, Frederic Weisbecker,
	Neeraj Upadhyay, Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Uladzislau Rezki, Oleksiy Avramchenko

Instead of invoking a synchronize_rcu() to free a pointer
after a grace period we can directly make use of new API
that does the same but in more efficient way.

TO: Jens Axboe <axboe@kernel.dk>
TO: Philipp Reisner <philipp.reisner@linbit.com>
TO: Jason Gunthorpe <jgg@nvidia.com>
TO: drbd-dev@lists.linbit.com
TO: linux-block@vger.kernel.org
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
---
 drivers/block/drbd/drbd_nl.c       | 9 +++------
 drivers/block/drbd/drbd_receiver.c | 6 ++----
 drivers/block/drbd/drbd_state.c    | 3 +--
 3 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
index 44ccf8b4f4b2..28f4d84945fd 100644
--- a/drivers/block/drbd/drbd_nl.c
+++ b/drivers/block/drbd/drbd_nl.c
@@ -1679,8 +1679,7 @@ int drbd_adm_disk_opts(struct sk_buff *skb, struct genl_info *info)
 			drbd_send_sync_param(peer_device);
 	}
 
-	synchronize_rcu();
-	kfree(old_disk_conf);
+	kvfree_rcu(old_disk_conf);
 	kfree(old_plan);
 	mod_timer(&device->request_timer, jiffies + HZ);
 	goto success;
@@ -2511,8 +2510,7 @@ int drbd_adm_net_opts(struct sk_buff *skb, struct genl_info *info)
 
 	mutex_unlock(&connection->resource->conf_update);
 	mutex_unlock(&connection->data.mutex);
-	synchronize_rcu();
-	kfree(old_net_conf);
+	kvfree_rcu(old_net_conf);
 
 	if (connection->cstate >= C_WF_REPORT_PARAMS) {
 		struct drbd_peer_device *peer_device;
@@ -2925,8 +2923,7 @@ int drbd_adm_resize(struct sk_buff *skb, struct genl_info *info)
 		new_disk_conf->disk_size = (sector_t)rs.resize_size;
 		rcu_assign_pointer(device->ldev->disk_conf, new_disk_conf);
 		mutex_unlock(&device->resource->conf_update);
-		synchronize_rcu();
-		kfree(old_disk_conf);
+		kvfree_rcu(old_disk_conf);
 		new_disk_conf = NULL;
 	}
 
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
index 1f740e42e457..d73a53242a75 100644
--- a/drivers/block/drbd/drbd_receiver.c
+++ b/drivers/block/drbd/drbd_receiver.c
@@ -3799,8 +3799,7 @@ static int receive_protocol(struct drbd_connection *connection, struct packet_in
 		drbd_info(connection, "peer data-integrity-alg: %s\n",
 			  integrity_alg[0] ? integrity_alg : "(none)");
 
-	synchronize_rcu();
-	kfree(old_net_conf);
+	kvfree_rcu(old_net_conf);
 	return 0;
 
 disconnect_rcu_unlock:
@@ -4168,8 +4167,7 @@ static int receive_sizes(struct drbd_connection *connection, struct packet_info
 
 			rcu_assign_pointer(device->ldev->disk_conf, new_disk_conf);
 			mutex_unlock(&connection->resource->conf_update);
-			synchronize_rcu();
-			kfree(old_disk_conf);
+			kvfree_rcu(old_disk_conf);
 
 			drbd_info(device, "Peer sets u_size to %lu sectors (old: %lu)\n",
 				 (unsigned long)p_usize, (unsigned long)my_usize);
diff --git a/drivers/block/drbd/drbd_state.c b/drivers/block/drbd/drbd_state.c
index b8a27818ab3f..826e496821c7 100644
--- a/drivers/block/drbd/drbd_state.c
+++ b/drivers/block/drbd/drbd_state.c
@@ -2071,8 +2071,7 @@ static int w_after_conn_state_ch(struct drbd_work *w, int unused)
 		conn_free_crypto(connection);
 		mutex_unlock(&connection->resource->conf_update);
 
-		synchronize_rcu();
-		kfree(old_conf);
+		kvfree_rcu(old_conf);
 	}
 
 	if (ns_max.susp_fen) {
-- 
2.30.2


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

* [PATCH RESEND] ext4: Replace ext4_kvfree_array_rcu() by kvfree_rcu() API
  2021-12-15 11:18 [PATCH] drdb: Switch to kvfree_rcu() API Uladzislau Rezki (Sony)
@ 2021-12-15 11:18 ` Uladzislau Rezki (Sony)
  2021-12-15 19:40   ` Uladzislau Rezki
  2021-12-15 11:18 ` [PATCH RESEND] ext4: Switch to " Uladzislau Rezki (Sony)
                   ` (7 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Uladzislau Rezki (Sony) @ 2021-12-15 11:18 UTC (permalink / raw)
  To: LKML, RCU, Paul E . McKenney
  Cc: Michal Hocko, Andrew Morton, Daniel Axtens, Frederic Weisbecker,
	Neeraj Upadhyay, Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Uladzislau Rezki, Oleksiy Avramchenko

The ext4_kvfree_array_rcu() function was introduced in order to
release some memory after a grace period during resizing of a
partition. An object that is freed does not contain any rcu_head
filed.

To do so, it requires to allocate some extra memory for a special
structure that has an rcu_head filed and pointer one where a freed
memory is attached. Finally call_rcu() API is invoked.

Since we have a single argument of kvfree_rcu() API, we can easily
replace all that tricky code by one single call that does the same
but in more efficient way.

TO: "Theodore Ts'o" <tytso@mit.edu>
TO: linux-ext4@vger.kernel.org
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
---
 fs/ext4/ext4.h    |  1 -
 fs/ext4/mballoc.c |  2 +-
 fs/ext4/resize.c  | 31 ++-----------------------------
 fs/ext4/super.c   |  2 +-
 4 files changed, 4 insertions(+), 32 deletions(-)

diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 404dd50856e5..7e8ff3ac2beb 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -3089,7 +3089,6 @@ extern int ext4_generic_delete_entry(struct inode *dir,
 extern bool ext4_empty_dir(struct inode *inode);
 
 /* resize.c */
-extern void ext4_kvfree_array_rcu(void *to_free);
 extern int ext4_group_add(struct super_block *sb,
 				struct ext4_new_group_data *input);
 extern int ext4_group_extend(struct super_block *sb,
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index 215b7068f548..b0469f7a5c55 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -3109,7 +3109,7 @@ int ext4_mb_alloc_groupinfo(struct super_block *sb, ext4_group_t ngroups)
 	rcu_assign_pointer(sbi->s_group_info, new_groupinfo);
 	sbi->s_group_info_size = size / sizeof(*sbi->s_group_info);
 	if (old_groupinfo)
-		ext4_kvfree_array_rcu(old_groupinfo);
+		kvfree_rcu(old_groupinfo);
 	ext4_debug("allocated s_groupinfo array for %d meta_bg's\n",
 		   sbi->s_group_info_size);
 	return 0;
diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
index b63cb88ccdae..ac6aa037aaab 100644
--- a/fs/ext4/resize.c
+++ b/fs/ext4/resize.c
@@ -17,33 +17,6 @@
 
 #include "ext4_jbd2.h"
 
-struct ext4_rcu_ptr {
-	struct rcu_head rcu;
-	void *ptr;
-};
-
-static void ext4_rcu_ptr_callback(struct rcu_head *head)
-{
-	struct ext4_rcu_ptr *ptr;
-
-	ptr = container_of(head, struct ext4_rcu_ptr, rcu);
-	kvfree(ptr->ptr);
-	kfree(ptr);
-}
-
-void ext4_kvfree_array_rcu(void *to_free)
-{
-	struct ext4_rcu_ptr *ptr = kzalloc(sizeof(*ptr), GFP_KERNEL);
-
-	if (ptr) {
-		ptr->ptr = to_free;
-		call_rcu(&ptr->rcu, ext4_rcu_ptr_callback);
-		return;
-	}
-	synchronize_rcu();
-	kvfree(to_free);
-}
-
 int ext4_resize_begin(struct super_block *sb)
 {
 	struct ext4_sb_info *sbi = EXT4_SB(sb);
@@ -906,7 +879,7 @@ static int add_new_gdb(handle_t *handle, struct inode *inode,
 	n_group_desc[gdb_num] = gdb_bh;
 	rcu_assign_pointer(EXT4_SB(sb)->s_group_desc, n_group_desc);
 	EXT4_SB(sb)->s_gdb_count++;
-	ext4_kvfree_array_rcu(o_group_desc);
+	kvfree_rcu(o_group_desc);
 
 	lock_buffer(EXT4_SB(sb)->s_sbh);
 	le16_add_cpu(&es->s_reserved_gdt_blocks, -1);
@@ -969,7 +942,7 @@ static int add_new_gdb_meta_bg(struct super_block *sb,
 
 	rcu_assign_pointer(EXT4_SB(sb)->s_group_desc, n_group_desc);
 	EXT4_SB(sb)->s_gdb_count++;
-	ext4_kvfree_array_rcu(o_group_desc);
+	kvfree_rcu(o_group_desc);
 	return err;
 }
 
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 111b0498a232..3942cd271a00 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -2759,7 +2759,7 @@ int ext4_alloc_flex_bg_array(struct super_block *sb, ext4_group_t ngroup)
 	rcu_assign_pointer(sbi->s_flex_groups, new_groups);
 	sbi->s_flex_groups_allocated = size;
 	if (old_groups)
-		ext4_kvfree_array_rcu(old_groups);
+		kvfree_rcu(old_groups);
 	return 0;
 }
 
-- 
2.30.2


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

* [PATCH RESEND] ext4: Switch to kvfree_rcu() API
  2021-12-15 11:18 [PATCH] drdb: Switch to kvfree_rcu() API Uladzislau Rezki (Sony)
  2021-12-15 11:18 ` [PATCH RESEND] ext4: Replace ext4_kvfree_array_rcu() by " Uladzislau Rezki (Sony)
@ 2021-12-15 11:18 ` Uladzislau Rezki (Sony)
  2021-12-15 19:41   ` Uladzislau Rezki
  2021-12-15 11:18 ` [PATCH] fs: nfs: sysfs: " Uladzislau Rezki (Sony)
                   ` (6 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Uladzislau Rezki (Sony) @ 2021-12-15 11:18 UTC (permalink / raw)
  To: LKML, RCU, Paul E . McKenney
  Cc: Michal Hocko, Andrew Morton, Daniel Axtens, Frederic Weisbecker,
	Neeraj Upadhyay, Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Uladzislau Rezki, Oleksiy Avramchenko, Uladzislau Rezki

From: Uladzislau Rezki <uladzislau.rezki@sony.com>

Instead of invoking a synchronize_rcu() to free a pointer
after a grace period we can directly make use of new API
that does the same but in more efficient way.

TO: "Theodore Ts'o" <tytso@mit.edu>
TO: linux-ext4@vger.kernel.org
Signed-off-by: Uladzislau Rezki <uladzislau.rezki@sony.com>
---
 fs/ext4/super.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 4e33b5eca694..111b0498a232 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -1886,8 +1886,7 @@ static int clear_qf_name(struct super_block *sb, int qtype)
 		return -1;
 	}
 	rcu_assign_pointer(sbi->s_qf_names[qtype], NULL);
-	synchronize_rcu();
-	kfree(old_qname);
+	kvfree_rcu(old_qname);
 	return 1;
 }
 #endif
-- 
2.30.2


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

* [PATCH] fs: nfs: sysfs: Switch to kvfree_rcu() API
  2021-12-15 11:18 [PATCH] drdb: Switch to kvfree_rcu() API Uladzislau Rezki (Sony)
  2021-12-15 11:18 ` [PATCH RESEND] ext4: Replace ext4_kvfree_array_rcu() by " Uladzislau Rezki (Sony)
  2021-12-15 11:18 ` [PATCH RESEND] ext4: Switch to " Uladzislau Rezki (Sony)
@ 2021-12-15 11:18 ` Uladzislau Rezki (Sony)
  2021-12-15 19:42   ` Uladzislau Rezki
  2021-12-15 11:18 ` [PATCH] mfd: dln2: " Uladzislau Rezki (Sony)
                   ` (5 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Uladzislau Rezki (Sony) @ 2021-12-15 11:18 UTC (permalink / raw)
  To: LKML, RCU, Paul E . McKenney
  Cc: Michal Hocko, Andrew Morton, Daniel Axtens, Frederic Weisbecker,
	Neeraj Upadhyay, Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Uladzislau Rezki, Oleksiy Avramchenko, Uladzislau Rezki

From: Uladzislau Rezki <uladzislau.rezki@sony.com>

Instead of invoking a synchronize_rcu() to free a pointer
after a grace period we can directly make use of new API
that does the same but in more efficient way.

TO: Trond Myklebust <trond.myklebust@hammerspace.com>
TO: linux-nfs@vger.kernel.org
Signed-off-by: Uladzislau Rezki <uladzislau.rezki@sony.com>
---
 fs/nfs/sysfs.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/fs/nfs/sysfs.c b/fs/nfs/sysfs.c
index 8cb70755e3c9..ff88d5d58e1e 100644
--- a/fs/nfs/sysfs.c
+++ b/fs/nfs/sysfs.c
@@ -113,10 +113,9 @@ static ssize_t nfs_netns_identifier_store(struct kobject *kobj,
 	if (!p)
 		return -ENOMEM;
 	old = rcu_dereference_protected(xchg(&c->identifier, (char __rcu *)p), 1);
-	if (old) {
-		synchronize_rcu();
-		kfree(old);
-	}
+	if (old)
+		kvfree_rcu(old);
+
 	return count;
 }
 
-- 
2.30.2


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

* [PATCH] mfd: dln2: Switch to kvfree_rcu() API
  2021-12-15 11:18 [PATCH] drdb: Switch to kvfree_rcu() API Uladzislau Rezki (Sony)
                   ` (2 preceding siblings ...)
  2021-12-15 11:18 ` [PATCH] fs: nfs: sysfs: " Uladzislau Rezki (Sony)
@ 2021-12-15 11:18 ` Uladzislau Rezki (Sony)
  2021-12-15 19:43   ` Uladzislau Rezki
  2021-12-15 11:18 ` [PATCH] misc: vmw_vmci: " Uladzislau Rezki (Sony)
                   ` (4 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Uladzislau Rezki (Sony) @ 2021-12-15 11:18 UTC (permalink / raw)
  To: LKML, RCU, Paul E . McKenney
  Cc: Michal Hocko, Andrew Morton, Daniel Axtens, Frederic Weisbecker,
	Neeraj Upadhyay, Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Uladzislau Rezki, Oleksiy Avramchenko

Instead of invoking a synchronize_rcu() to free a pointer
after a grace period we can directly make use of new API
that does the same but in more efficient way.

TO: Lee Jones <lee.jones@linaro.org>
TO: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
---
 drivers/mfd/dln2.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/mfd/dln2.c b/drivers/mfd/dln2.c
index 852129ea0766..365e3e77cac4 100644
--- a/drivers/mfd/dln2.c
+++ b/drivers/mfd/dln2.c
@@ -179,10 +179,8 @@ void dln2_unregister_event_cb(struct platform_device *pdev, u16 id)
 
 	spin_unlock_irqrestore(&dln2->event_cb_lock, flags);
 
-	if (found) {
-		synchronize_rcu();
-		kfree(i);
-	}
+	if (found)
+		kvfree_rcu(i);
 }
 EXPORT_SYMBOL(dln2_unregister_event_cb);
 
-- 
2.30.2


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

* [PATCH] misc: vmw_vmci: Switch to kvfree_rcu() API
  2021-12-15 11:18 [PATCH] drdb: Switch to kvfree_rcu() API Uladzislau Rezki (Sony)
                   ` (3 preceding siblings ...)
  2021-12-15 11:18 ` [PATCH] mfd: dln2: " Uladzislau Rezki (Sony)
@ 2021-12-15 11:18 ` Uladzislau Rezki (Sony)
  2021-12-15 19:45   ` Uladzislau Rezki
  2021-12-15 11:18 ` [PATCH] mlxsw: core: " Uladzislau Rezki (Sony)
                   ` (3 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Uladzislau Rezki (Sony) @ 2021-12-15 11:18 UTC (permalink / raw)
  To: LKML, RCU, Paul E . McKenney
  Cc: Michal Hocko, Andrew Morton, Daniel Axtens, Frederic Weisbecker,
	Neeraj Upadhyay, Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Uladzislau Rezki, Oleksiy Avramchenko, Greg Kroah-Hartman

Instead of invoking a synchronize_rcu() to free a pointer
after a grace period we can directly make use of new API
that does the same but in more efficient way.

CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
TO: Jorgen Hansen <jhansen@vmware.com>
TO: Vishnu Dasa <vdasa@vmware.com>
TO: pv-drivers@vmware.com

Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
---
 drivers/misc/vmw_vmci/vmci_context.c | 6 ++----
 drivers/misc/vmw_vmci/vmci_event.c   | 3 +--
 2 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/misc/vmw_vmci/vmci_context.c b/drivers/misc/vmw_vmci/vmci_context.c
index c0b5e339d5a1..6cf3e21c7604 100644
--- a/drivers/misc/vmw_vmci/vmci_context.c
+++ b/drivers/misc/vmw_vmci/vmci_context.c
@@ -687,10 +687,8 @@ int vmci_ctx_remove_notification(u32 context_id, u32 remote_cid)
 	}
 	spin_unlock(&context->lock);
 
-	if (found) {
-		synchronize_rcu();
-		kfree(notifier);
-	}
+	if (found)
+		kvfree_rcu(notifier);
 
 	vmci_ctx_put(context);
 
diff --git a/drivers/misc/vmw_vmci/vmci_event.c b/drivers/misc/vmw_vmci/vmci_event.c
index e3436abf39f4..2100297c94ad 100644
--- a/drivers/misc/vmw_vmci/vmci_event.c
+++ b/drivers/misc/vmw_vmci/vmci_event.c
@@ -209,8 +209,7 @@ int vmci_event_unsubscribe(u32 sub_id)
 	if (!s)
 		return VMCI_ERROR_NOT_FOUND;
 
-	synchronize_rcu();
-	kfree(s);
+	kvfree_rcu(s);
 
 	return VMCI_SUCCESS;
 }
-- 
2.30.2


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

* [PATCH] mlxsw: core: Switch to kvfree_rcu() API
  2021-12-15 11:18 [PATCH] drdb: Switch to kvfree_rcu() API Uladzislau Rezki (Sony)
                   ` (4 preceding siblings ...)
  2021-12-15 11:18 ` [PATCH] misc: vmw_vmci: " Uladzislau Rezki (Sony)
@ 2021-12-15 11:18 ` Uladzislau Rezki (Sony)
  2021-12-15 19:46   ` Uladzislau Rezki
  2021-12-15 11:18 ` [PATCH] RDMA/hfi1: " Uladzislau Rezki (Sony)
                   ` (2 subsequent siblings)
  8 siblings, 1 reply; 23+ messages in thread
From: Uladzislau Rezki (Sony) @ 2021-12-15 11:18 UTC (permalink / raw)
  To: LKML, RCU, Paul E . McKenney
  Cc: Michal Hocko, Andrew Morton, Daniel Axtens, Frederic Weisbecker,
	Neeraj Upadhyay, Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Uladzislau Rezki, Oleksiy Avramchenko

Instead of invoking a synchronize_rcu() to free a pointer
after a grace period we can directly make use of new API
that does the same but in more efficient way.

TO: David S. Miller <davem@davemloft.net>
TO: Jakub Kicinski <kuba@kernel.org>
TO: netdev@vger.kernel.org
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
---
 drivers/net/ethernet/mellanox/mlxsw/core.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c
index 3fd3812b8f31..47c29769759b 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/core.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/core.c
@@ -2190,8 +2190,7 @@ void mlxsw_core_rx_listener_unregister(struct mlxsw_core *mlxsw_core,
 	if (!rxl_item)
 		return;
 	list_del_rcu(&rxl_item->list);
-	synchronize_rcu();
-	kfree(rxl_item);
+	kvfree_rcu(rxl_item);
 }
 EXPORT_SYMBOL(mlxsw_core_rx_listener_unregister);
 
-- 
2.30.2


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

* [PATCH] RDMA/hfi1: Switch to kvfree_rcu() API
  2021-12-15 11:18 [PATCH] drdb: Switch to kvfree_rcu() API Uladzislau Rezki (Sony)
                   ` (5 preceding siblings ...)
  2021-12-15 11:18 ` [PATCH] mlxsw: core: " Uladzislau Rezki (Sony)
@ 2021-12-15 11:18 ` Uladzislau Rezki (Sony)
  2021-12-15 19:47   ` Uladzislau Rezki
  2021-12-15 11:18 ` [PATCH] scsi: core: " Uladzislau Rezki (Sony)
  2021-12-15 19:38 ` [PATCH] drdb: " Uladzislau Rezki
  8 siblings, 1 reply; 23+ messages in thread
From: Uladzislau Rezki (Sony) @ 2021-12-15 11:18 UTC (permalink / raw)
  To: LKML, RCU, Paul E . McKenney
  Cc: Michal Hocko, Andrew Morton, Daniel Axtens, Frederic Weisbecker,
	Neeraj Upadhyay, Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Uladzislau Rezki, Oleksiy Avramchenko, Mike Marciniszyn

Instead of invoking a synchronize_rcu() to free a pointer
after a grace period we can directly make use of new API
that does the same but in more efficient way.

TO: linux-rdma@vger.kernel.org
TO: Jason Gunthorpe <jgg@nvidia.com>
TO: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
Acked-by: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
---
 drivers/infiniband/hw/hfi1/sdma.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/infiniband/hw/hfi1/sdma.c b/drivers/infiniband/hw/hfi1/sdma.c
index f07d328689d3..7264a35e8f4c 100644
--- a/drivers/infiniband/hw/hfi1/sdma.c
+++ b/drivers/infiniband/hw/hfi1/sdma.c
@@ -1292,8 +1292,7 @@ void sdma_clean(struct hfi1_devdata *dd, size_t num_engines)
 	sdma_map_free(rcu_access_pointer(dd->sdma_map));
 	RCU_INIT_POINTER(dd->sdma_map, NULL);
 	spin_unlock_irq(&dd->sde_map_lock);
-	synchronize_rcu();
-	kfree(dd->per_sdma);
+	kvfree_rcu(dd->per_sdma);
 	dd->per_sdma = NULL;
 
 	if (dd->sdma_rht) {
-- 
2.30.2


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

* [PATCH] scsi: core: Switch to kvfree_rcu() API
  2021-12-15 11:18 [PATCH] drdb: Switch to kvfree_rcu() API Uladzislau Rezki (Sony)
                   ` (6 preceding siblings ...)
  2021-12-15 11:18 ` [PATCH] RDMA/hfi1: " Uladzislau Rezki (Sony)
@ 2021-12-15 11:18 ` Uladzislau Rezki (Sony)
  2021-12-15 19:48   ` Uladzislau Rezki
  2021-12-15 19:38 ` [PATCH] drdb: " Uladzislau Rezki
  8 siblings, 1 reply; 23+ messages in thread
From: Uladzislau Rezki (Sony) @ 2021-12-15 11:18 UTC (permalink / raw)
  To: LKML, RCU, Paul E . McKenney
  Cc: Michal Hocko, Andrew Morton, Daniel Axtens, Frederic Weisbecker,
	Neeraj Upadhyay, Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Uladzislau Rezki, Oleksiy Avramchenko

Instead of invoking a synchronize_rcu() to free a pointer
after a grace period we can directly make use of new API
that does the same but in more efficient way.

TO: James E.J. Bottomley <jejb@linux.ibm.com>
TO: Martin K. Petersen <martin.petersen@oracle.com>
TO: linux-scsi@vger.kernel.org
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
---
 drivers/scsi/device_handler/scsi_dh_alua.c | 3 +--
 drivers/scsi/device_handler/scsi_dh_rdac.c | 3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/device_handler/scsi_dh_alua.c
index 37d06f993b76..308246ce346a 100644
--- a/drivers/scsi/device_handler/scsi_dh_alua.c
+++ b/drivers/scsi/device_handler/scsi_dh_alua.c
@@ -1238,8 +1238,7 @@ static void alua_bus_detach(struct scsi_device *sdev)
 		kref_put(&pg->kref, release_port_group);
 	}
 	sdev->handler_data = NULL;
-	synchronize_rcu();
-	kfree(h);
+	kvfree_rcu(h);
 }
 
 static struct scsi_device_handler alua_dh = {
diff --git a/drivers/scsi/device_handler/scsi_dh_rdac.c b/drivers/scsi/device_handler/scsi_dh_rdac.c
index 66652ab409cc..dc687021ff3a 100644
--- a/drivers/scsi/device_handler/scsi_dh_rdac.c
+++ b/drivers/scsi/device_handler/scsi_dh_rdac.c
@@ -782,8 +782,7 @@ static void rdac_bus_detach( struct scsi_device *sdev )
 	}
 	spin_unlock(&list_lock);
 	sdev->handler_data = NULL;
-	synchronize_rcu();
-	kfree(h);
+	kvfree_rcu(h);
 }
 
 static struct scsi_device_handler rdac_dh = {
-- 
2.30.2


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

* Re: [PATCH] drdb: Switch to kvfree_rcu() API
  2021-12-15 11:18 [PATCH] drdb: Switch to kvfree_rcu() API Uladzislau Rezki (Sony)
                   ` (7 preceding siblings ...)
  2021-12-15 11:18 ` [PATCH] scsi: core: " Uladzislau Rezki (Sony)
@ 2021-12-15 19:38 ` Uladzislau Rezki
  8 siblings, 0 replies; 23+ messages in thread
From: Uladzislau Rezki @ 2021-12-15 19:38 UTC (permalink / raw)
  To: Jens Axboe, Philipp Reisner, Jason Gunthorpe, drbd-dev, linux-block
  Cc: LKML, RCU, Paul E . McKenney, Michal Hocko, Andrew Morton,
	Daniel Axtens, Frederic Weisbecker, Neeraj Upadhyay,
	Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Oleksiy Avramchenko

On Wed, Dec 15, 2021 at 12:18:37PM +0100, Uladzislau Rezki (Sony) wrote:
> Instead of invoking a synchronize_rcu() to free a pointer
> after a grace period we can directly make use of new API
> that does the same but in more efficient way.
> 
> TO: Jens Axboe <axboe@kernel.dk>
> TO: Philipp Reisner <philipp.reisner@linbit.com>
> TO: Jason Gunthorpe <jgg@nvidia.com>
> TO: drbd-dev@lists.linbit.com
> TO: linux-block@vger.kernel.org
> Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
> ---
>  drivers/block/drbd/drbd_nl.c       | 9 +++------
>  drivers/block/drbd/drbd_receiver.c | 6 ++----
>  drivers/block/drbd/drbd_state.c    | 3 +--
>  3 files changed, 6 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
> index 44ccf8b4f4b2..28f4d84945fd 100644
> --- a/drivers/block/drbd/drbd_nl.c
> +++ b/drivers/block/drbd/drbd_nl.c
> @@ -1679,8 +1679,7 @@ int drbd_adm_disk_opts(struct sk_buff *skb, struct genl_info *info)
>  			drbd_send_sync_param(peer_device);
>  	}
>  
> -	synchronize_rcu();
> -	kfree(old_disk_conf);
> +	kvfree_rcu(old_disk_conf);
>  	kfree(old_plan);
>  	mod_timer(&device->request_timer, jiffies + HZ);
>  	goto success;
> @@ -2511,8 +2510,7 @@ int drbd_adm_net_opts(struct sk_buff *skb, struct genl_info *info)
>  
>  	mutex_unlock(&connection->resource->conf_update);
>  	mutex_unlock(&connection->data.mutex);
> -	synchronize_rcu();
> -	kfree(old_net_conf);
> +	kvfree_rcu(old_net_conf);
>  
>  	if (connection->cstate >= C_WF_REPORT_PARAMS) {
>  		struct drbd_peer_device *peer_device;
> @@ -2925,8 +2923,7 @@ int drbd_adm_resize(struct sk_buff *skb, struct genl_info *info)
>  		new_disk_conf->disk_size = (sector_t)rs.resize_size;
>  		rcu_assign_pointer(device->ldev->disk_conf, new_disk_conf);
>  		mutex_unlock(&device->resource->conf_update);
> -		synchronize_rcu();
> -		kfree(old_disk_conf);
> +		kvfree_rcu(old_disk_conf);
>  		new_disk_conf = NULL;
>  	}
>  
> diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
> index 1f740e42e457..d73a53242a75 100644
> --- a/drivers/block/drbd/drbd_receiver.c
> +++ b/drivers/block/drbd/drbd_receiver.c
> @@ -3799,8 +3799,7 @@ static int receive_protocol(struct drbd_connection *connection, struct packet_in
>  		drbd_info(connection, "peer data-integrity-alg: %s\n",
>  			  integrity_alg[0] ? integrity_alg : "(none)");
>  
> -	synchronize_rcu();
> -	kfree(old_net_conf);
> +	kvfree_rcu(old_net_conf);
>  	return 0;
>  
>  disconnect_rcu_unlock:
> @@ -4168,8 +4167,7 @@ static int receive_sizes(struct drbd_connection *connection, struct packet_info
>  
>  			rcu_assign_pointer(device->ldev->disk_conf, new_disk_conf);
>  			mutex_unlock(&connection->resource->conf_update);
> -			synchronize_rcu();
> -			kfree(old_disk_conf);
> +			kvfree_rcu(old_disk_conf);
>  
>  			drbd_info(device, "Peer sets u_size to %lu sectors (old: %lu)\n",
>  				 (unsigned long)p_usize, (unsigned long)my_usize);
> diff --git a/drivers/block/drbd/drbd_state.c b/drivers/block/drbd/drbd_state.c
> index b8a27818ab3f..826e496821c7 100644
> --- a/drivers/block/drbd/drbd_state.c
> +++ b/drivers/block/drbd/drbd_state.c
> @@ -2071,8 +2071,7 @@ static int w_after_conn_state_ch(struct drbd_work *w, int unused)
>  		conn_free_crypto(connection);
>  		mutex_unlock(&connection->resource->conf_update);
>  
> -		synchronize_rcu();
> -		kfree(old_conf);
> +		kvfree_rcu(old_conf);
>  	}
>  
>  	if (ns_max.susp_fen) {
> -- 
> 2.30.2
> 
+ Jens Axboe <axboe@kernel.dk>
+ Philipp Reisner <philipp.reisner@linbit.com>
+ Jason Gunthorpe <jgg@nvidia.com>
+ drbd-dev@lists.linbit.com
+ linux-block@vger.kernel.org

--
Vlad Rezki

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

* Re: [PATCH RESEND] ext4: Replace ext4_kvfree_array_rcu() by kvfree_rcu() API
  2021-12-15 11:18 ` [PATCH RESEND] ext4: Replace ext4_kvfree_array_rcu() by " Uladzislau Rezki (Sony)
@ 2021-12-15 19:40   ` Uladzislau Rezki
  0 siblings, 0 replies; 23+ messages in thread
From: Uladzislau Rezki @ 2021-12-15 19:40 UTC (permalink / raw)
  To: Theodore Ts'o, linux-ext4
  Cc: LKML, RCU, Paul E . McKenney, Michal Hocko, Andrew Morton,
	Daniel Axtens, Frederic Weisbecker, Neeraj Upadhyay,
	Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Oleksiy Avramchenko

On Wed, Dec 15, 2021 at 12:18:38PM +0100, Uladzislau Rezki (Sony) wrote:
> The ext4_kvfree_array_rcu() function was introduced in order to
> release some memory after a grace period during resizing of a
> partition. An object that is freed does not contain any rcu_head
> filed.
> 
> To do so, it requires to allocate some extra memory for a special
> structure that has an rcu_head filed and pointer one where a freed
> memory is attached. Finally call_rcu() API is invoked.
> 
> Since we have a single argument of kvfree_rcu() API, we can easily
> replace all that tricky code by one single call that does the same
> but in more efficient way.
> 
> TO: "Theodore Ts'o" <tytso@mit.edu>
> TO: linux-ext4@vger.kernel.org
> Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
> ---
>  fs/ext4/ext4.h    |  1 -
>  fs/ext4/mballoc.c |  2 +-
>  fs/ext4/resize.c  | 31 ++-----------------------------
>  fs/ext4/super.c   |  2 +-
>  4 files changed, 4 insertions(+), 32 deletions(-)
> 
> diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
> index 404dd50856e5..7e8ff3ac2beb 100644
> --- a/fs/ext4/ext4.h
> +++ b/fs/ext4/ext4.h
> @@ -3089,7 +3089,6 @@ extern int ext4_generic_delete_entry(struct inode *dir,
>  extern bool ext4_empty_dir(struct inode *inode);
>  
>  /* resize.c */
> -extern void ext4_kvfree_array_rcu(void *to_free);
>  extern int ext4_group_add(struct super_block *sb,
>  				struct ext4_new_group_data *input);
>  extern int ext4_group_extend(struct super_block *sb,
> diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
> index 215b7068f548..b0469f7a5c55 100644
> --- a/fs/ext4/mballoc.c
> +++ b/fs/ext4/mballoc.c
> @@ -3109,7 +3109,7 @@ int ext4_mb_alloc_groupinfo(struct super_block *sb, ext4_group_t ngroups)
>  	rcu_assign_pointer(sbi->s_group_info, new_groupinfo);
>  	sbi->s_group_info_size = size / sizeof(*sbi->s_group_info);
>  	if (old_groupinfo)
> -		ext4_kvfree_array_rcu(old_groupinfo);
> +		kvfree_rcu(old_groupinfo);
>  	ext4_debug("allocated s_groupinfo array for %d meta_bg's\n",
>  		   sbi->s_group_info_size);
>  	return 0;
> diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
> index b63cb88ccdae..ac6aa037aaab 100644
> --- a/fs/ext4/resize.c
> +++ b/fs/ext4/resize.c
> @@ -17,33 +17,6 @@
>  
>  #include "ext4_jbd2.h"
>  
> -struct ext4_rcu_ptr {
> -	struct rcu_head rcu;
> -	void *ptr;
> -};
> -
> -static void ext4_rcu_ptr_callback(struct rcu_head *head)
> -{
> -	struct ext4_rcu_ptr *ptr;
> -
> -	ptr = container_of(head, struct ext4_rcu_ptr, rcu);
> -	kvfree(ptr->ptr);
> -	kfree(ptr);
> -}
> -
> -void ext4_kvfree_array_rcu(void *to_free)
> -{
> -	struct ext4_rcu_ptr *ptr = kzalloc(sizeof(*ptr), GFP_KERNEL);
> -
> -	if (ptr) {
> -		ptr->ptr = to_free;
> -		call_rcu(&ptr->rcu, ext4_rcu_ptr_callback);
> -		return;
> -	}
> -	synchronize_rcu();
> -	kvfree(to_free);
> -}
> -
>  int ext4_resize_begin(struct super_block *sb)
>  {
>  	struct ext4_sb_info *sbi = EXT4_SB(sb);
> @@ -906,7 +879,7 @@ static int add_new_gdb(handle_t *handle, struct inode *inode,
>  	n_group_desc[gdb_num] = gdb_bh;
>  	rcu_assign_pointer(EXT4_SB(sb)->s_group_desc, n_group_desc);
>  	EXT4_SB(sb)->s_gdb_count++;
> -	ext4_kvfree_array_rcu(o_group_desc);
> +	kvfree_rcu(o_group_desc);
>  
>  	lock_buffer(EXT4_SB(sb)->s_sbh);
>  	le16_add_cpu(&es->s_reserved_gdt_blocks, -1);
> @@ -969,7 +942,7 @@ static int add_new_gdb_meta_bg(struct super_block *sb,
>  
>  	rcu_assign_pointer(EXT4_SB(sb)->s_group_desc, n_group_desc);
>  	EXT4_SB(sb)->s_gdb_count++;
> -	ext4_kvfree_array_rcu(o_group_desc);
> +	kvfree_rcu(o_group_desc);
>  	return err;
>  }
>  
> diff --git a/fs/ext4/super.c b/fs/ext4/super.c
> index 111b0498a232..3942cd271a00 100644
> --- a/fs/ext4/super.c
> +++ b/fs/ext4/super.c
> @@ -2759,7 +2759,7 @@ int ext4_alloc_flex_bg_array(struct super_block *sb, ext4_group_t ngroup)
>  	rcu_assign_pointer(sbi->s_flex_groups, new_groups);
>  	sbi->s_flex_groups_allocated = size;
>  	if (old_groups)
> -		ext4_kvfree_array_rcu(old_groups);
> +		kvfree_rcu(old_groups);
>  	return 0;
>  }
>  
> -- 
> 2.30.2
> 
+ "Theodore Ts'o" <tytso@mit.edu>
+ linux-ext4@vger.kernel.org

--
Vlad Rezki

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

* Re: [PATCH RESEND] ext4: Switch to kvfree_rcu() API
  2021-12-15 11:18 ` [PATCH RESEND] ext4: Switch to " Uladzislau Rezki (Sony)
@ 2021-12-15 19:41   ` Uladzislau Rezki
  0 siblings, 0 replies; 23+ messages in thread
From: Uladzislau Rezki @ 2021-12-15 19:41 UTC (permalink / raw)
  To: Theodore Ts'o, linux-ext4
  Cc: LKML, RCU, Paul E . McKenney, Michal Hocko, Andrew Morton,
	Daniel Axtens, Frederic Weisbecker, Neeraj Upadhyay,
	Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Oleksiy Avramchenko, Uladzislau Rezki

On Wed, Dec 15, 2021 at 12:18:39PM +0100, Uladzislau Rezki (Sony) wrote:
> From: Uladzislau Rezki <uladzislau.rezki@sony.com>
> 
> Instead of invoking a synchronize_rcu() to free a pointer
> after a grace period we can directly make use of new API
> that does the same but in more efficient way.
> 
> TO: "Theodore Ts'o" <tytso@mit.edu>
> TO: linux-ext4@vger.kernel.org
> Signed-off-by: Uladzislau Rezki <uladzislau.rezki@sony.com>
> ---
>  fs/ext4/super.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/fs/ext4/super.c b/fs/ext4/super.c
> index 4e33b5eca694..111b0498a232 100644
> --- a/fs/ext4/super.c
> +++ b/fs/ext4/super.c
> @@ -1886,8 +1886,7 @@ static int clear_qf_name(struct super_block *sb, int qtype)
>  		return -1;
>  	}
>  	rcu_assign_pointer(sbi->s_qf_names[qtype], NULL);
> -	synchronize_rcu();
> -	kfree(old_qname);
> +	kvfree_rcu(old_qname);
>  	return 1;
>  }
>  #endif
> -- 
> 2.30.2
> 
+ "Theodore Ts'o" <tytso@mit.edu>
+ linux-ext4@vger.kernel.org

--
Vlad Rezki

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

* Re: [PATCH] fs: nfs: sysfs: Switch to kvfree_rcu() API
  2021-12-15 11:18 ` [PATCH] fs: nfs: sysfs: " Uladzislau Rezki (Sony)
@ 2021-12-15 19:42   ` Uladzislau Rezki
  0 siblings, 0 replies; 23+ messages in thread
From: Uladzislau Rezki @ 2021-12-15 19:42 UTC (permalink / raw)
  To: Trond Myklebust, linux-nfs
  Cc: LKML, RCU, Paul E . McKenney, Michal Hocko, Andrew Morton,
	Daniel Axtens, Frederic Weisbecker, Neeraj Upadhyay,
	Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Oleksiy Avramchenko, Uladzislau Rezki

On Wed, Dec 15, 2021 at 12:18:40PM +0100, Uladzislau Rezki (Sony) wrote:
> From: Uladzislau Rezki <uladzislau.rezki@sony.com>
> 
> Instead of invoking a synchronize_rcu() to free a pointer
> after a grace period we can directly make use of new API
> that does the same but in more efficient way.
> 
> TO: Trond Myklebust <trond.myklebust@hammerspace.com>
> TO: linux-nfs@vger.kernel.org
> Signed-off-by: Uladzislau Rezki <uladzislau.rezki@sony.com>
> ---
>  fs/nfs/sysfs.c | 7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/fs/nfs/sysfs.c b/fs/nfs/sysfs.c
> index 8cb70755e3c9..ff88d5d58e1e 100644
> --- a/fs/nfs/sysfs.c
> +++ b/fs/nfs/sysfs.c
> @@ -113,10 +113,9 @@ static ssize_t nfs_netns_identifier_store(struct kobject *kobj,
>  	if (!p)
>  		return -ENOMEM;
>  	old = rcu_dereference_protected(xchg(&c->identifier, (char __rcu *)p), 1);
> -	if (old) {
> -		synchronize_rcu();
> -		kfree(old);
> -	}
> +	if (old)
> +		kvfree_rcu(old);
> +
>  	return count;
>  }
>  
> -- 
> 2.30.2
> 
+ Trond Myklebust <trond.myklebust@hammerspace.com>                                                                                                                                    
+ linux-nfs@vger.kernel.org  

--
Vlad Rezki

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

* Re: [PATCH] mfd: dln2: Switch to kvfree_rcu() API
  2021-12-15 11:18 ` [PATCH] mfd: dln2: " Uladzislau Rezki (Sony)
@ 2021-12-15 19:43   ` Uladzislau Rezki
  2021-12-16 17:01     ` Lee Jones
  0 siblings, 1 reply; 23+ messages in thread
From: Uladzislau Rezki @ 2021-12-15 19:43 UTC (permalink / raw)
  To: Lee Jones, Mike Marciniszyn
  Cc: LKML, RCU, Paul E . McKenney, Michal Hocko, Andrew Morton,
	Daniel Axtens, Frederic Weisbecker, Neeraj Upadhyay,
	Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Oleksiy Avramchenko

On Wed, Dec 15, 2021 at 12:18:41PM +0100, Uladzislau Rezki (Sony) wrote:
> Instead of invoking a synchronize_rcu() to free a pointer
> after a grace period we can directly make use of new API
> that does the same but in more efficient way.
> 
> TO: Lee Jones <lee.jones@linaro.org>
> TO: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
> Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
> ---
>  drivers/mfd/dln2.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/mfd/dln2.c b/drivers/mfd/dln2.c
> index 852129ea0766..365e3e77cac4 100644
> --- a/drivers/mfd/dln2.c
> +++ b/drivers/mfd/dln2.c
> @@ -179,10 +179,8 @@ void dln2_unregister_event_cb(struct platform_device *pdev, u16 id)
>  
>  	spin_unlock_irqrestore(&dln2->event_cb_lock, flags);
>  
> -	if (found) {
> -		synchronize_rcu();
> -		kfree(i);
> -	}
> +	if (found)
> +		kvfree_rcu(i);
>  }
>  EXPORT_SYMBOL(dln2_unregister_event_cb);
>  
> -- 
> 2.30.2
> 
+ Lee Jones <lee.jones@linaro.org>                                                                                                                                                     
+ Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>

--
Vlad Rezki

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

* Re: [PATCH] misc: vmw_vmci: Switch to kvfree_rcu() API
  2021-12-15 11:18 ` [PATCH] misc: vmw_vmci: " Uladzislau Rezki (Sony)
@ 2021-12-15 19:45   ` Uladzislau Rezki
  0 siblings, 0 replies; 23+ messages in thread
From: Uladzislau Rezki @ 2021-12-15 19:45 UTC (permalink / raw)
  To: Jorgen Hansen, Vishnu Dasa, pv-drivers
  Cc: LKML, RCU, Paul E . McKenney, Michal Hocko, Andrew Morton,
	Daniel Axtens, Frederic Weisbecker, Neeraj Upadhyay,
	Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Oleksiy Avramchenko, Greg Kroah-Hartman

On Wed, Dec 15, 2021 at 12:18:42PM +0100, Uladzislau Rezki (Sony) wrote:
> Instead of invoking a synchronize_rcu() to free a pointer
> after a grace period we can directly make use of new API
> that does the same but in more efficient way.
> 
> CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> TO: Jorgen Hansen <jhansen@vmware.com>
> TO: Vishnu Dasa <vdasa@vmware.com>
> TO: pv-drivers@vmware.com
> 
> Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
> ---
>  drivers/misc/vmw_vmci/vmci_context.c | 6 ++----
>  drivers/misc/vmw_vmci/vmci_event.c   | 3 +--
>  2 files changed, 3 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/misc/vmw_vmci/vmci_context.c b/drivers/misc/vmw_vmci/vmci_context.c
> index c0b5e339d5a1..6cf3e21c7604 100644
> --- a/drivers/misc/vmw_vmci/vmci_context.c
> +++ b/drivers/misc/vmw_vmci/vmci_context.c
> @@ -687,10 +687,8 @@ int vmci_ctx_remove_notification(u32 context_id, u32 remote_cid)
>  	}
>  	spin_unlock(&context->lock);
>  
> -	if (found) {
> -		synchronize_rcu();
> -		kfree(notifier);
> -	}
> +	if (found)
> +		kvfree_rcu(notifier);
>  
>  	vmci_ctx_put(context);
>  
> diff --git a/drivers/misc/vmw_vmci/vmci_event.c b/drivers/misc/vmw_vmci/vmci_event.c
> index e3436abf39f4..2100297c94ad 100644
> --- a/drivers/misc/vmw_vmci/vmci_event.c
> +++ b/drivers/misc/vmw_vmci/vmci_event.c
> @@ -209,8 +209,7 @@ int vmci_event_unsubscribe(u32 sub_id)
>  	if (!s)
>  		return VMCI_ERROR_NOT_FOUND;
>  
> -	synchronize_rcu();
> -	kfree(s);
> +	kvfree_rcu(s);
>  
>  	return VMCI_SUCCESS;
>  }
> -- 
> 2.30.2
> 
+ Jorgen Hansen <jhansen@vmware.com>
+ Vishnu Dasa <vdasa@vmware.com>
+ pv-drivers@vmware.com

--
Vlad Rezki

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

* Re: [PATCH] mlxsw: core: Switch to kvfree_rcu() API
  2021-12-15 11:18 ` [PATCH] mlxsw: core: " Uladzislau Rezki (Sony)
@ 2021-12-15 19:46   ` Uladzislau Rezki
  2021-12-15 23:38     ` Jakub Kicinski
  0 siblings, 1 reply; 23+ messages in thread
From: Uladzislau Rezki @ 2021-12-15 19:46 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski, netdev
  Cc: LKML, RCU, Paul E . McKenney, Michal Hocko, Andrew Morton,
	Daniel Axtens, Frederic Weisbecker, Neeraj Upadhyay,
	Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Oleksiy Avramchenko

On Wed, Dec 15, 2021 at 12:18:43PM +0100, Uladzislau Rezki (Sony) wrote:
> Instead of invoking a synchronize_rcu() to free a pointer
> after a grace period we can directly make use of new API
> that does the same but in more efficient way.
> 
> TO: David S. Miller <davem@davemloft.net>
> TO: Jakub Kicinski <kuba@kernel.org>
> TO: netdev@vger.kernel.org
> Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
> ---
>  drivers/net/ethernet/mellanox/mlxsw/core.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c
> index 3fd3812b8f31..47c29769759b 100644
> --- a/drivers/net/ethernet/mellanox/mlxsw/core.c
> +++ b/drivers/net/ethernet/mellanox/mlxsw/core.c
> @@ -2190,8 +2190,7 @@ void mlxsw_core_rx_listener_unregister(struct mlxsw_core *mlxsw_core,
>  	if (!rxl_item)
>  		return;
>  	list_del_rcu(&rxl_item->list);
> -	synchronize_rcu();
> -	kfree(rxl_item);
> +	kvfree_rcu(rxl_item);
>  }
>  EXPORT_SYMBOL(mlxsw_core_rx_listener_unregister);
>  
> -- 
> 2.30.2
> 
+ David S. Miller <davem@davemloft.net>
+ Jakub Kicinski <kuba@kernel.org>
+ netdev@vger.kernel.org

--
Vlad Rezki

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

* Re: [PATCH] RDMA/hfi1: Switch to kvfree_rcu() API
  2021-12-15 11:18 ` [PATCH] RDMA/hfi1: " Uladzislau Rezki (Sony)
@ 2021-12-15 19:47   ` Uladzislau Rezki
  2021-12-15 19:49     ` Jason Gunthorpe
  0 siblings, 1 reply; 23+ messages in thread
From: Uladzislau Rezki @ 2021-12-15 19:47 UTC (permalink / raw)
  To: linux-rdma, Jason Gunthorpe, Mike Marciniszyn
  Cc: LKML, RCU, Paul E . McKenney, Michal Hocko, Andrew Morton,
	Daniel Axtens, Frederic Weisbecker, Neeraj Upadhyay,
	Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Oleksiy Avramchenko, Mike Marciniszyn

On Wed, Dec 15, 2021 at 12:18:44PM +0100, Uladzislau Rezki (Sony) wrote:
> Instead of invoking a synchronize_rcu() to free a pointer
> after a grace period we can directly make use of new API
> that does the same but in more efficient way.
> 
> TO: linux-rdma@vger.kernel.org
> TO: Jason Gunthorpe <jgg@nvidia.com>
> TO: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
> Acked-by: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
> Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
> ---
>  drivers/infiniband/hw/hfi1/sdma.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/infiniband/hw/hfi1/sdma.c b/drivers/infiniband/hw/hfi1/sdma.c
> index f07d328689d3..7264a35e8f4c 100644
> --- a/drivers/infiniband/hw/hfi1/sdma.c
> +++ b/drivers/infiniband/hw/hfi1/sdma.c
> @@ -1292,8 +1292,7 @@ void sdma_clean(struct hfi1_devdata *dd, size_t num_engines)
>  	sdma_map_free(rcu_access_pointer(dd->sdma_map));
>  	RCU_INIT_POINTER(dd->sdma_map, NULL);
>  	spin_unlock_irq(&dd->sde_map_lock);
> -	synchronize_rcu();
> -	kfree(dd->per_sdma);
> +	kvfree_rcu(dd->per_sdma);
>  	dd->per_sdma = NULL;
>  
>  	if (dd->sdma_rht) {
> -- 
> 2.30.2
> 
+ linux-rdma@vger.kernel.org
+ Jason Gunthorpe <jgg@nvidia.com>
+ Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>

--
Vlad Rezki

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

* Re: [PATCH] scsi: core: Switch to kvfree_rcu() API
  2021-12-15 11:18 ` [PATCH] scsi: core: " Uladzislau Rezki (Sony)
@ 2021-12-15 19:48   ` Uladzislau Rezki
  0 siblings, 0 replies; 23+ messages in thread
From: Uladzislau Rezki @ 2021-12-15 19:48 UTC (permalink / raw)
  To: James E.J. Bottomley, Martin K. Petersen, linux-scsi
  Cc: LKML, RCU, Paul E . McKenney, Michal Hocko, Andrew Morton,
	Daniel Axtens, Frederic Weisbecker, Neeraj Upadhyay,
	Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Oleksiy Avramchenko

On Wed, Dec 15, 2021 at 12:18:45PM +0100, Uladzislau Rezki (Sony) wrote:
> Instead of invoking a synchronize_rcu() to free a pointer
> after a grace period we can directly make use of new API
> that does the same but in more efficient way.
> 
> TO: James E.J. Bottomley <jejb@linux.ibm.com>
> TO: Martin K. Petersen <martin.petersen@oracle.com>
> TO: linux-scsi@vger.kernel.org
> Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
> ---
>  drivers/scsi/device_handler/scsi_dh_alua.c | 3 +--
>  drivers/scsi/device_handler/scsi_dh_rdac.c | 3 +--
>  2 files changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/device_handler/scsi_dh_alua.c
> index 37d06f993b76..308246ce346a 100644
> --- a/drivers/scsi/device_handler/scsi_dh_alua.c
> +++ b/drivers/scsi/device_handler/scsi_dh_alua.c
> @@ -1238,8 +1238,7 @@ static void alua_bus_detach(struct scsi_device *sdev)
>  		kref_put(&pg->kref, release_port_group);
>  	}
>  	sdev->handler_data = NULL;
> -	synchronize_rcu();
> -	kfree(h);
> +	kvfree_rcu(h);
>  }
>  
>  static struct scsi_device_handler alua_dh = {
> diff --git a/drivers/scsi/device_handler/scsi_dh_rdac.c b/drivers/scsi/device_handler/scsi_dh_rdac.c
> index 66652ab409cc..dc687021ff3a 100644
> --- a/drivers/scsi/device_handler/scsi_dh_rdac.c
> +++ b/drivers/scsi/device_handler/scsi_dh_rdac.c
> @@ -782,8 +782,7 @@ static void rdac_bus_detach( struct scsi_device *sdev )
>  	}
>  	spin_unlock(&list_lock);
>  	sdev->handler_data = NULL;
> -	synchronize_rcu();
> -	kfree(h);
> +	kvfree_rcu(h);
>  }
>  
>  static struct scsi_device_handler rdac_dh = {
> -- 
> 2.30.2
> 
+ James E.J. Bottomley <jejb@linux.ibm.com>
+ Martin K. Petersen <martin.petersen@oracle.com>
+ linux-scsi@vger.kernel.org

--
Vlad Rezki

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

* Re: [PATCH] RDMA/hfi1: Switch to kvfree_rcu() API
  2021-12-15 19:47   ` Uladzislau Rezki
@ 2021-12-15 19:49     ` Jason Gunthorpe
  2021-12-15 20:51       ` Uladzislau Rezki
  0 siblings, 1 reply; 23+ messages in thread
From: Jason Gunthorpe @ 2021-12-15 19:49 UTC (permalink / raw)
  To: Uladzislau Rezki
  Cc: linux-rdma, Mike Marciniszyn, LKML, RCU, Paul E . McKenney,
	Michal Hocko, Andrew Morton, Daniel Axtens, Frederic Weisbecker,
	Neeraj Upadhyay, Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Oleksiy Avramchenko

On Wed, Dec 15, 2021 at 08:47:38PM +0100, Uladzislau Rezki wrote:
> On Wed, Dec 15, 2021 at 12:18:44PM +0100, Uladzislau Rezki (Sony) wrote:
> > Instead of invoking a synchronize_rcu() to free a pointer
> > after a grace period we can directly make use of new API
> > that does the same but in more efficient way.
> > 
> > TO: linux-rdma@vger.kernel.org
> > TO: Jason Gunthorpe <jgg@nvidia.com>
> > TO: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
> > Acked-by: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
> > Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
> >  drivers/infiniband/hw/hfi1/sdma.c | 3 +--
> >  1 file changed, 1 insertion(+), 2 deletions(-)
> > 
> > diff --git a/drivers/infiniband/hw/hfi1/sdma.c b/drivers/infiniband/hw/hfi1/sdma.c
> > index f07d328689d3..7264a35e8f4c 100644
> > +++ b/drivers/infiniband/hw/hfi1/sdma.c
> > @@ -1292,8 +1292,7 @@ void sdma_clean(struct hfi1_devdata *dd, size_t num_engines)
> >  	sdma_map_free(rcu_access_pointer(dd->sdma_map));
> >  	RCU_INIT_POINTER(dd->sdma_map, NULL);
> >  	spin_unlock_irq(&dd->sde_map_lock);
> > -	synchronize_rcu();
> > -	kfree(dd->per_sdma);
> > +	kvfree_rcu(dd->per_sdma);
> >  	dd->per_sdma = NULL;
> >  
> >  	if (dd->sdma_rht) {
> + linux-rdma@vger.kernel.org
> + Jason Gunthorpe <jgg@nvidia.com>
> + Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>

If it is not in the rdma patchworks it won't get applied..

https://patchwork.kernel.org/project/linux-rdma/list/

Jason
 

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

* Re: [PATCH] RDMA/hfi1: Switch to kvfree_rcu() API
  2021-12-15 19:49     ` Jason Gunthorpe
@ 2021-12-15 20:51       ` Uladzislau Rezki
  0 siblings, 0 replies; 23+ messages in thread
From: Uladzislau Rezki @ 2021-12-15 20:51 UTC (permalink / raw)
  To: Jason Gunthorpe
  Cc: linux-rdma, Mike Marciniszyn, LKML, RCU, Paul E . McKenney,
	Michal Hocko, Andrew Morton, Daniel Axtens, Frederic Weisbecker,
	Neeraj Upadhyay, Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Oleksiy Avramchenko

On Wed, Dec 15, 2021 at 8:49 PM Jason Gunthorpe <jgg@nvidia.com> wrote:
>
> On Wed, Dec 15, 2021 at 08:47:38PM +0100, Uladzislau Rezki wrote:
> > On Wed, Dec 15, 2021 at 12:18:44PM +0100, Uladzislau Rezki (Sony) wrote:
> > > Instead of invoking a synchronize_rcu() to free a pointer
> > > after a grace period we can directly make use of new API
> > > that does the same but in more efficient way.
> > >
> > > TO: linux-rdma@vger.kernel.org
> > > TO: Jason Gunthorpe <jgg@nvidia.com>
> > > TO: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
> > > Acked-by: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
> > > Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
> > >  drivers/infiniband/hw/hfi1/sdma.c | 3 +--
> > >  1 file changed, 1 insertion(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/infiniband/hw/hfi1/sdma.c b/drivers/infiniband/hw/hfi1/sdma.c
> > > index f07d328689d3..7264a35e8f4c 100644
> > > +++ b/drivers/infiniband/hw/hfi1/sdma.c
> > > @@ -1292,8 +1292,7 @@ void sdma_clean(struct hfi1_devdata *dd, size_t num_engines)
> > >     sdma_map_free(rcu_access_pointer(dd->sdma_map));
> > >     RCU_INIT_POINTER(dd->sdma_map, NULL);
> > >     spin_unlock_irq(&dd->sde_map_lock);
> > > -   synchronize_rcu();
> > > -   kfree(dd->per_sdma);
> > > +   kvfree_rcu(dd->per_sdma);
> > >     dd->per_sdma = NULL;
> > >
> > >     if (dd->sdma_rht) {
> > + linux-rdma@vger.kernel.org
> > + Jason Gunthorpe <jgg@nvidia.com>
> > + Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
>
> If it is not in the rdma patchworks it won't get applied..
>
> https://patchwork.kernel.org/project/linux-rdma/list/
>
Do you mean that i should:

Cc: <linux-rdma@vger.kernel.org>
Cc: Jason Gunthorpe <jgg@nvidia.com>
Cc: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>

instead?

Thanks!

-- 
Uladzislau Rezki

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

* Re: [PATCH] mlxsw: core: Switch to kvfree_rcu() API
  2021-12-15 19:46   ` Uladzislau Rezki
@ 2021-12-15 23:38     ` Jakub Kicinski
  0 siblings, 0 replies; 23+ messages in thread
From: Jakub Kicinski @ 2021-12-15 23:38 UTC (permalink / raw)
  To: Uladzislau Rezki
  Cc: David S. Miller, netdev, LKML, RCU, Paul E . McKenney,
	Michal Hocko, Andrew Morton, Daniel Axtens, Frederic Weisbecker,
	Neeraj Upadhyay, Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Oleksiy Avramchenko

On Wed, 15 Dec 2021 20:46:34 +0100 Uladzislau Rezki wrote:
> On Wed, Dec 15, 2021 at 12:18:43PM +0100, Uladzislau Rezki (Sony) wrote:
> > Instead of invoking a synchronize_rcu() to free a pointer
> > after a grace period we can directly make use of new API
> > that does the same but in more efficient way.
> > 
> > TO: David S. Miller <davem@davemloft.net>
> > TO: Jakub Kicinski <kuba@kernel.org>
> > TO: netdev@vger.kernel.org
> > Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
> > ---
> >  drivers/net/ethernet/mellanox/mlxsw/core.c | 3 +--
> >  1 file changed, 1 insertion(+), 2 deletions(-)
> > 
> > diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c
> > index 3fd3812b8f31..47c29769759b 100644
> > --- a/drivers/net/ethernet/mellanox/mlxsw/core.c
> > +++ b/drivers/net/ethernet/mellanox/mlxsw/core.c
> > @@ -2190,8 +2190,7 @@ void mlxsw_core_rx_listener_unregister(struct mlxsw_core *mlxsw_core,
> >  	if (!rxl_item)
> >  		return;
> >  	list_del_rcu(&rxl_item->list);
> > -	synchronize_rcu();
> > -	kfree(rxl_item);
> > +	kvfree_rcu(rxl_item);
> >  }
> >  EXPORT_SYMBOL(mlxsw_core_rx_listener_unregister);
> 
> + David S. Miller <davem@davemloft.net>
> + Jakub Kicinski <kuba@kernel.org>
> + netdev@vger.kernel.org

Impressive CC list. Please make a fresh posting to netdev@
and use ./scripts/get_maintainer.pl.

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

* Re: [PATCH] mfd: dln2: Switch to kvfree_rcu() API
  2021-12-15 19:43   ` Uladzislau Rezki
@ 2021-12-16 17:01     ` Lee Jones
  2021-12-17 15:06       ` Uladzislau Rezki
  0 siblings, 1 reply; 23+ messages in thread
From: Lee Jones @ 2021-12-16 17:01 UTC (permalink / raw)
  To: Uladzislau Rezki
  Cc: Mike Marciniszyn, LKML, RCU, Paul E . McKenney, Michal Hocko,
	Andrew Morton, Daniel Axtens, Frederic Weisbecker,
	Neeraj Upadhyay, Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Oleksiy Avramchenko

On Wed, 15 Dec 2021, Uladzislau Rezki wrote:

> On Wed, Dec 15, 2021 at 12:18:41PM +0100, Uladzislau Rezki (Sony) wrote:
> > Instead of invoking a synchronize_rcu() to free a pointer
> > after a grace period we can directly make use of new API
> > that does the same but in more efficient way.
> > 
> > TO: Lee Jones <lee.jones@linaro.org>
> > TO: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
> > Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
> > ---
> >  drivers/mfd/dln2.c | 6 ++----
> >  1 file changed, 2 insertions(+), 4 deletions(-)
> > 
> > diff --git a/drivers/mfd/dln2.c b/drivers/mfd/dln2.c
> > index 852129ea0766..365e3e77cac4 100644
> > --- a/drivers/mfd/dln2.c
> > +++ b/drivers/mfd/dln2.c
> > @@ -179,10 +179,8 @@ void dln2_unregister_event_cb(struct platform_device *pdev, u16 id)
> >  
> >  	spin_unlock_irqrestore(&dln2->event_cb_lock, flags);
> >  
> > -	if (found) {
> > -		synchronize_rcu();
> > -		kfree(i);
> > -	}
> > +	if (found)
> > +		kvfree_rcu(i);
> >  }
> >  EXPORT_SYMBOL(dln2_unregister_event_cb);
> >  
> + Lee Jones <lee.jones@linaro.org>                                                                                                                                                     
> + Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>

I can't do anything with this.

Send it properly please.

-- 
Lee Jones [李琼斯]
Senior Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* Re: [PATCH] mfd: dln2: Switch to kvfree_rcu() API
  2021-12-16 17:01     ` Lee Jones
@ 2021-12-17 15:06       ` Uladzislau Rezki
  0 siblings, 0 replies; 23+ messages in thread
From: Uladzislau Rezki @ 2021-12-17 15:06 UTC (permalink / raw)
  To: Lee Jones
  Cc: Mike Marciniszyn, LKML, RCU, Paul E . McKenney, Michal Hocko,
	Andrew Morton, Daniel Axtens, Frederic Weisbecker,
	Neeraj Upadhyay, Joel Fernandes, Peter Zijlstra, Thomas Gleixner,
	Theodore Y . Ts'o, Sebastian Andrzej Siewior,
	Oleksiy Avramchenko

On Thu, Dec 16, 2021 at 6:02 PM Lee Jones <lee.jones@linaro.org> wrote:
>
> On Wed, 15 Dec 2021, Uladzislau Rezki wrote:
>
> > On Wed, Dec 15, 2021 at 12:18:41PM +0100, Uladzislau Rezki (Sony) wrote:
> > > Instead of invoking a synchronize_rcu() to free a pointer
> > > after a grace period we can directly make use of new API
> > > that does the same but in more efficient way.
> > >
> > > TO: Lee Jones <lee.jones@linaro.org>
> > > TO: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
> > > Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
> > > ---
> > >  drivers/mfd/dln2.c | 6 ++----
> > >  1 file changed, 2 insertions(+), 4 deletions(-)
> > >
> > > diff --git a/drivers/mfd/dln2.c b/drivers/mfd/dln2.c
> > > index 852129ea0766..365e3e77cac4 100644
> > > --- a/drivers/mfd/dln2.c
> > > +++ b/drivers/mfd/dln2.c
> > > @@ -179,10 +179,8 @@ void dln2_unregister_event_cb(struct platform_device *pdev, u16 id)
> > >
> > >     spin_unlock_irqrestore(&dln2->event_cb_lock, flags);
> > >
> > > -   if (found) {
> > > -           synchronize_rcu();
> > > -           kfree(i);
> > > -   }
> > > +   if (found)
> > > +           kvfree_rcu(i);
> > >  }
> > >  EXPORT_SYMBOL(dln2_unregister_event_cb);
> > >
> > + Lee Jones <lee.jones@linaro.org>
> > + Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
>
> I can't do anything with this.
>
> Send it properly please.
>
I got. Will do.

Thanks!

-- 
Uladzislau Rezki

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

end of thread, other threads:[~2021-12-17 15:06 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-15 11:18 [PATCH] drdb: Switch to kvfree_rcu() API Uladzislau Rezki (Sony)
2021-12-15 11:18 ` [PATCH RESEND] ext4: Replace ext4_kvfree_array_rcu() by " Uladzislau Rezki (Sony)
2021-12-15 19:40   ` Uladzislau Rezki
2021-12-15 11:18 ` [PATCH RESEND] ext4: Switch to " Uladzislau Rezki (Sony)
2021-12-15 19:41   ` Uladzislau Rezki
2021-12-15 11:18 ` [PATCH] fs: nfs: sysfs: " Uladzislau Rezki (Sony)
2021-12-15 19:42   ` Uladzislau Rezki
2021-12-15 11:18 ` [PATCH] mfd: dln2: " Uladzislau Rezki (Sony)
2021-12-15 19:43   ` Uladzislau Rezki
2021-12-16 17:01     ` Lee Jones
2021-12-17 15:06       ` Uladzislau Rezki
2021-12-15 11:18 ` [PATCH] misc: vmw_vmci: " Uladzislau Rezki (Sony)
2021-12-15 19:45   ` Uladzislau Rezki
2021-12-15 11:18 ` [PATCH] mlxsw: core: " Uladzislau Rezki (Sony)
2021-12-15 19:46   ` Uladzislau Rezki
2021-12-15 23:38     ` Jakub Kicinski
2021-12-15 11:18 ` [PATCH] RDMA/hfi1: " Uladzislau Rezki (Sony)
2021-12-15 19:47   ` Uladzislau Rezki
2021-12-15 19:49     ` Jason Gunthorpe
2021-12-15 20:51       ` Uladzislau Rezki
2021-12-15 11:18 ` [PATCH] scsi: core: " Uladzislau Rezki (Sony)
2021-12-15 19:48   ` Uladzislau Rezki
2021-12-15 19:38 ` [PATCH] drdb: " Uladzislau Rezki

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.