kern/134276: [linux][patch] MSG_NOSIGNAL not translated for
recv(), socket timeout incorrect for 64-bit hosts
Chagin Dmitry
dchagin at freebsd.org
Mon May 11 07:36:33 UTC 2009
On Mon, May 11, 2009 at 09:20:45AM +0200, Thomas Mueller wrote:
> On Sat, 9 May 2009 12:06:09 +0400, Chagin Dmitry wrote:
> > On Sat, May 09, 2009 at 07:00:04AM +0000, Thomas Mueller wrote:
> > > The following reply was made to PR kern/134276; it has been noted by GNATS.
> > >
> > > From: Thomas Mueller <tmueller at sysgo.com>
> > > To: Chagin Dmitry <dchagin at freebsd.org>
> > > Cc: freebsd-gnats-submit at freebsd.org
> > > Subject: Re: kern/134276: [linux][patch] MSG_NOSIGNAL not translated for
> > > recv(), socket timeout incorrect for 64-bit hosts
> > > Date: Sat, 9 May 2009 08:30:53 +0200
> > >
> > > > > I've encountered two socket related problems with the Linux emulation:
> > > > >
> > > > > 1. A Linux application passing the MSG_NOSIGNAL flag in calls to
> > > > > recv() or recvfrom() will still receive a SIGPIPE if the condition
> > > > > for sending the signal is met.
> > > > >
> > > > > 2. An attempt to set socket timeouts with a call to setsocktopt() using the
> > > > > SO_RECVTIMEO or SO_SNDTIMEO option will fail with [EINVAL] on amd64.
> > > > >
> > > >
> > > > What the Linux application you have mentioned?
> > > > I should know it to test patches. Thank you.
> > >
> > > Sorry for not mentioning it in the PR. The applications are part of the
> > > LM-X License Manager package by X-Formation (http://www.x-formation.com/).
> > > It looks like they offer a trial download but require registration.
> > >
> > > When back in the office (next weeek), I could revert my local changes
> > > and provide you with an output of linux_kdump if that helps. I would
> > > also test patches.
> > >
> > >
> >
> > Thank you,
> >
> > Please, apply this two patches.
> >
> > http://people.freebsd.org/~dchagin/patches/commit-4952ce8.patch
>
> In linux_setsockopt() when calling kern_setsockopt() for
> SO_RCVTIMEO/SO_SNDTIMEO you need to pass 'name' instead of
> 'bsd_args.name' since the latter is still undefined at that point:
>
> --- commit-4952ce8.patch.orig 2009-05-11 09:07:56.000000000 +0200
> +++ commit-4952ce8.patch 2009-05-11 09:08:09.000000000 +0200
> @@ -39,7 +39,7 @@
> + tv.tv_sec = linux_tv.tv_sec;
> + tv.tv_usec = linux_tv.tv_usec;
> + return (kern_setsockopt(td, bsd_args.s, bsd_args.level,
> -+ bsd_args.name, &tv, UIO_SYSSPACE, sizeof(tv)));
> ++ name, &tv, UIO_SYSSPACE, sizeof(tv)));
> + break;
> + default:
> + break;
>
> > http://people.freebsd.org/~dchagin/patches/commit-6355ebf.patch
>
>
Good catch, thank you!
--
Have fun!
chd
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-emulation/attachments/20090511/32bf0a48/attachment.pgp
More information about the freebsd-emulation
mailing list