On Thu, 14 Sept 2023 at 08:00, Amir Goldstein <amir73il@xxxxxxxxx> wrote: > > + if (ctr >= bufsize) > > + return -EOVERFLOW; > > + if (put_user(r->mnt_id_unique, buf + ctr)) > > + return -EFAULT; > > + ctr++; > > + if (ctr < 0) > > + return -ERANGE; > > I think it'd be good for userspace to be able to query required > bufsize with NULL buf, listattr style, rather than having to > guess and re-guess on EOVERFLOW. The getxattr/listxattr style encourages the following code: size = get(NULL, 0); buf = alloc(size); err = get(buf, size); if (err) /* failure */ Which is wrong, since the needed buffer size could change between the two calls. Doing it iteratively is the only correct way, and then adding complexity to both userspace and the kernel for *optimizing* the iteration is not really worth it, IMO. Thanks, Miklos