Re: [PATCH 3/6] ksmbd: replace rwlock with rcu for concurrenct access on conn list

From: Dawei Li
Date: Mon Jan 30 2023 - 09:17:09 EST


Hi Sergey,

Thanks for reviewing,

On Mon, Jan 30, 2023 at 01:15:35PM +0900, Sergey Senozhatsky wrote:
> On (23/01/15 18:32), Dawei Li wrote:
> >
> > void ksmbd_conn_free(struct ksmbd_conn *conn)
> > {
> > - write_lock(&conn_list_lock);
> > - list_del(&conn->conns_list);
> > - write_unlock(&conn_list_lock);
> > + spin_lock(&conn_list_lock);
> > + list_del_rcu(&conn->conns_list);
> > + spin_unlock(&conn_list_lock);
synchronize_rcu();
> >
> > xa_destroy(&conn->sessions);
> > kvfree(conn->request_buf);
>
> From a quick look this does not seem like a correct RCU usage. E.g.
> where do you wait for grace periods and synchronize readers/writers?

Nice catch, I totally mess it up. Thanks!

At first glance, I assume synchronize_rcu() will do the job if sleeping
is OK?

Steve, Namjae,
Please drop this buggy patch from ksmbd-for-next.

Thanks,
Dawei