* [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.