lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 20 Jul 2010 15:42:05 -0700
From:	Andrew Morton <akpm@...ux-foundation.org>
To:	Nathan Lynch <ntl@...ox.com>
Cc:	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
	Davide Libenzi <davidel@...ilserver.org>, stable@...nel.org
Subject: Re: [PATCH] signalfd: fill in ssi_int for posix timers and message
 queues

On Fri, 02 Jul 2010 19:38:48 -0500
Nathan Lynch <ntl@...ox.com> wrote:

> If signalfd is used to consume a signal generated by a POSIX interval
> timer or POSIX message queue, the ssi_int field does not reflect the
> data (sigevent->sigev_value) supplied to timer_create(2) or
> mq_notify(3).  (The ssi_ptr field, however, is filled in.)
> 
> This behavior differs from signalfd's treatment of sigqueue-generated
> signals -- see the default case in signalfd_copyinfo.  It also gives
> results that differ from the case when a signal is handled
> conventionally via a sigaction-registered handler.
> 
> So, set signalfd_siginfo->ssi_int in the remaining cases (__SI_TIMER,
> __SI_MESGQ) where ssi_ptr is set.
> 

This introduces an incompatibility between kernel versions.  Someone
develops and tests an application on 2.6.36 or later then ships it and
lo, it malfunctions on 2.6.35 and earlier.

Is there a way to avoid that?  Don't think so.

How should the more-awake-than-average application developer prevent
this problem?  Should he probe the syscall at runtime to determine its
behaviour?  He can't use the kernel version number because the kernel
provider might have backported this patch into an earlier kernel.

We can minimise the problem by backporting into -stable, and hoping
that awake kernel packagers understand the issue, and backport the
change as far as they can.

So it's not 100% obvious that this change is desirable.  Does the
functionality which this patch adds justify the introduction of these
problems?

> ---
>  fs/signalfd.c |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
> 
> diff --git a/fs/signalfd.c b/fs/signalfd.c
> index f329849..1c5a6ad 100644
> --- a/fs/signalfd.c
> +++ b/fs/signalfd.c
> @@ -88,6 +88,7 @@ static int signalfd_copyinfo(struct signalfd_siginfo __user *uinfo,
>  		 err |= __put_user(kinfo->si_tid, &uinfo->ssi_tid);
>  		 err |= __put_user(kinfo->si_overrun, &uinfo->ssi_overrun);
>  		 err |= __put_user((long) kinfo->si_ptr, &uinfo->ssi_ptr);
> +		 err |= __put_user(kinfo->si_int, &uinfo->ssi_int);
>  		break;

hm, someone bollixed the __SI_TIMER indenting.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ