Re: [PATCH 09/14] fs: don't change the address limit for ->write_iter in __kernel_write
From: Christoph Hellwig
Date: Mon May 18 2020 - 02:42:53 EST
On Sat, May 16, 2020 at 11:04:36AM +0800, Hillf Danton wrote:
> > + if (file->f_op->write_iter) {
> > + struct kvec iov = { .iov_base = (void *)buf, .iov_len = count };
> > + struct kiocb kiocb;
> > + struct iov_iter iter;
> > +
> > + init_sync_kiocb(&kiocb, file);
> > + kiocb.ki_pos = *pos;
> > + iov_iter_kvec(&iter, WRITE, &iov, 1, count);
> > + ret = file->f_op->write_iter(&kiocb, &iter);
> > + if (ret > 0)
> > + *pos = kiocb.ki_pos;
> > + } else if (file->f_op->write) {
> > + mm_segment_t old_fs = get_fs();
> > +
> > + set_fs(KERNEL_DS);
>
> Would you please shed light on who need it if a workqueue worker does
> not, given the access to buf?
Can you rephrase the question, I unfortunately do not understand it at
all as-is.