On Wed, Aug 18, 2021 at 05:27:02PM +0900, Yasunori Goto wrote: > Hello, > > When I started to use SoftRoCE, I'm very confused by > ENOMEM error output even if I gave enough memory. > > I think EPERM is more suitable for uses to solve error rather than > ENOMEM at here of ib_umem_get() when # of pinned pages is over ulimit. > This is not "memory is not enough" problem, because driver can > succeed to pin enough amount of pages, but it is larger than ulimit value. > > The hard limit of "max locked memory" can be changed by limit.conf. > In addition, this checks also CAP_IPC_LOCK, it is indeed permmission check. > So, I think the following patch. > > If there is a intention why ENOMEM is used here, please let me know. > Otherwise, I'm glad if this is merged. > > Thanks. > > > --- > When # of pinned pages are larger than ulimit of "max locked memory" > without CAP_IPC_LOCK, current ib_umem_get() returns ENOMEM. > But it does not mean "not enough memory", because driver could succeed to > pinned enough pages. > This is just capability error. Even if a normal user is limited > his/her # of pinned pages, system administrator can give permission > by change hard limit of this ulimit value. > To notify correct information to user, ib_umem_get() > should return EPERM instead of ENOMEM at here. I'm not convinced, can you find other places checking the ulimit and list what codes they return? Jason