On Wed, Mar 15, 2023 at 2:19 PM Joel Fernandes (Google) <joel@xxxxxxxxxxxxxxxxx> wrote: > > From: "Uladzislau Rezki (Sony)" <urezki@xxxxxxxxx> > > The kvfree_rcu() macro's single-argument form is deprecated. Therefore > switch to the new kvfree_rcu_mightsleep() variant. The goal is to > avoid accidental use of the single-argument forms, which can introduce > functionality bugs in atomic contexts and latency bugs in non-atomic > contexts. > > Cc: Jens Axboe <axboe@xxxxxxxxx> > Cc: Philipp Reisner <philipp.reisner@xxxxxxxxxx> > Cc: Lars Ellenberg <lars.ellenberg@xxxxxxxxxx> Jens/Others, any chance for an Ack here? - Joel > Signed-off-by: Uladzislau Rezki (Sony) <urezki@xxxxxxxxx> > Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxx> > Signed-off-by: Joel Fernandes (Google) <joel@xxxxxxxxxxxxxxxxx> > --- > drivers/block/drbd/drbd_nl.c | 6 +++--- > drivers/block/drbd/drbd_receiver.c | 4 ++-- > drivers/block/drbd/drbd_state.c | 2 +- > 3 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c > index 60757ac31701..f49f2a5282e1 100644 > --- a/drivers/block/drbd/drbd_nl.c > +++ b/drivers/block/drbd/drbd_nl.c > @@ -1615,7 +1615,7 @@ int drbd_adm_disk_opts(struct sk_buff *skb, struct genl_info *info) > drbd_send_sync_param(peer_device); > } > > - kvfree_rcu(old_disk_conf); > + kvfree_rcu_mightsleep(old_disk_conf); > kfree(old_plan); > mod_timer(&device->request_timer, jiffies + HZ); > goto success; > @@ -2446,7 +2446,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); > - kvfree_rcu(old_net_conf); > + kvfree_rcu_mightsleep(old_net_conf); > > if (connection->cstate >= C_WF_REPORT_PARAMS) { > struct drbd_peer_device *peer_device; > @@ -2860,7 +2860,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); > - kvfree_rcu(old_disk_conf); > + kvfree_rcu_mightsleep(old_disk_conf); > new_disk_conf = NULL; > } > > diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c > index 757f4692b5bd..e197b2a465d2 100644 > --- a/drivers/block/drbd/drbd_receiver.c > +++ b/drivers/block/drbd/drbd_receiver.c > @@ -3759,7 +3759,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)"); > > - kvfree_rcu(old_net_conf); > + kvfree_rcu_mightsleep(old_net_conf); > return 0; > > disconnect_rcu_unlock: > @@ -4127,7 +4127,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); > - kvfree_rcu(old_disk_conf); > + kvfree_rcu_mightsleep(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 75d13ea0024f..2aeea295fa28 100644 > --- a/drivers/block/drbd/drbd_state.c > +++ b/drivers/block/drbd/drbd_state.c > @@ -2071,7 +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); > > - kvfree_rcu(old_conf); > + kvfree_rcu_mightsleep(old_conf); > } > > if (ns_max.susp_fen) { > -- > 2.40.0.rc1.284.g88254d51c5-goog >