> -----Original Message----- > From: Jason Gunthorpe <jgg@xxxxxxxxxx> > Sent: Monday, 30 January 2023 14:29 > To: Bernard Metzler <BMT@xxxxxxxxxxxxxx> > Cc: linux-rdma@xxxxxxxxxxxxxxx; leonro@xxxxxxxxxx; apopple@xxxxxxxxxx > Subject: [EXTERNAL] Re: [PATCH] RDMA/siw: Fix user page pinning accounting > > On Mon, Jan 30, 2023 at 02:28:04PM +0100, Bernard Metzler wrote: > > To avoid racing with other user memory reservations, immediately > > account full amount of pages to be pinned. > > > > Fixes: 2251334dcac9 ("rdma/siw: application buffer management") > > Reported-by: Jason Gunthorpe <jgg@xxxxxxxxxx> > > Suggested-by: Alistair Popple <apopple@xxxxxxxxxx> > > Signed-off-by: Bernard Metzler <bmt@xxxxxxxxxxxxxx> > > --- > > drivers/infiniband/sw/siw/siw_mem.c | 8 ++++++-- > > 1 file changed, 6 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/infiniband/sw/siw/siw_mem.c > b/drivers/infiniband/sw/siw/siw_mem.c > > index b2b33dd3b4fa..7cf4d927bbab 100644 > > --- a/drivers/infiniband/sw/siw/siw_mem.c > > +++ b/drivers/infiniband/sw/siw/siw_mem.c > > @@ -398,7 +398,8 @@ struct siw_umem *siw_umem_get(u64 start, u64 len, > bool writable) > > > > mlock_limit = rlimit(RLIMIT_MEMLOCK) >> PAGE_SHIFT; > > > > - if (num_pages + atomic64_read(&mm_s->pinned_vm) > mlock_limit) { > > + if (num_pages + atomic64_add_return(num_pages, &mm_s->pinned_vm) > > > + mlock_limit) { > > ??? > > Doesn't atomic_add_return return the result of adding num_pages and > pinned_vm? Then you add it again? > Stupid me. Thanks. Let me re-send > Jason