On 06.11.18, 19:52, Jan Kiszka wrote:
> On 06.11.18 11:00, Sebastian Smolorz via Xenomai wrote:
> > A bug in rt_tcp_recvmsg() prevented an application to receive data
> > over an RTTCP socket. Data was not copied back to the application's
> > buffer but rather into a temporary kernel buffer.
> > 
> > Signed-off-by: Sebastian Smolorz <sebastian.smol...@gmx.de>
> > ---
> > 
> >  kernel/drivers/net/stack/ipv4/tcp/tcp.c | 13 +++----------
> >  1 file changed, 3 insertions(+), 10 deletions(-)
> > 
> > diff --git a/kernel/drivers/net/stack/ipv4/tcp/tcp.c
> > b/kernel/drivers/net/stack/ipv4/tcp/tcp.c index 2678e6a..3242a08
> > 100644
> > --- a/kernel/drivers/net/stack/ipv4/tcp/tcp.c
> > +++ b/kernel/drivers/net/stack/ipv4/tcp/tcp.c
> > @@ -2084,17 +2084,10 @@ static ssize_t rt_tcp_recvmsg(struct rtdm_fd
> > *fd, struct user_msghdr *msg, int m> 
> >     len = iov[0].iov_len;
> >     if (len > 0) {
> > 
> > -           buf = xnmalloc(len);
> > -           if (buf == NULL) {
> > -                   ret = -ENOMEM;
> > -                   goto out;
> > -           }
> > -           ret = rtdm_copy_from_user(fd, buf, iov[0].iov_base, len);
> > -           if (!ret)
> > -                   ret = rt_tcp_read(fd, buf, len);
> > -           xnfree(buf);
> > +           buf = iov[0].iov_base;
> > +           ret = rt_tcp_read(fd, buf, len);
> 
> Does this go well with smap? IOW: Was everything testing on a system
> with smap support available and enabled?

smap was enabled. Tests were executed on an Atom E3845. cat /proc/
cpuinfo showed no smap flag.

> >     }
> > 
> > -out:
> > +
> > 
> >     rtdm_drop_iovec(iov, iov_fast);
> >     
> >     return ret;

-- 
Sebastian




Reply via email to