Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f0c2b681 authored by Alan Stern's avatar Alan Stern Committed by Greg Kroah-Hartman
Browse files

USB: usbfs: don't leak kernel data in siginfo



When a signal is delivered, the information in the siginfo structure
is copied to userspace.  Good security practice dicatates that the
unused fields in this structure should be initialized to 0 so that
random kernel stack data isn't exposed to the user.  This patch adds
such an initialization to the two places where usbfs raises signals.

Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Reported-by: default avatarDave Mielke <dave@mielke.cc>
CC: <stable@vger.kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 27082e26
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -501,6 +501,7 @@ static void async_completed(struct urb *urb)
	as->status = urb->status;
	as->status = urb->status;
	signr = as->signr;
	signr = as->signr;
	if (signr) {
	if (signr) {
		memset(&sinfo, 0, sizeof(sinfo));
		sinfo.si_signo = as->signr;
		sinfo.si_signo = as->signr;
		sinfo.si_errno = as->status;
		sinfo.si_errno = as->status;
		sinfo.si_code = SI_ASYNCIO;
		sinfo.si_code = SI_ASYNCIO;
@@ -2382,6 +2383,7 @@ static void usbdev_remove(struct usb_device *udev)
		wake_up_all(&ps->wait);
		wake_up_all(&ps->wait);
		list_del_init(&ps->list);
		list_del_init(&ps->list);
		if (ps->discsignr) {
		if (ps->discsignr) {
			memset(&sinfo, 0, sizeof(sinfo));
			sinfo.si_signo = ps->discsignr;
			sinfo.si_signo = ps->discsignr;
			sinfo.si_errno = EPIPE;
			sinfo.si_errno = EPIPE;
			sinfo.si_code = SI_ASYNCIO;
			sinfo.si_code = SI_ASYNCIO;