From patchwork Tue Dec 1 17:52:16 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnaldo Carvalho de Melo X-Patchwork-Id: 39925 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id 451461007D3 for ; Wed, 2 Dec 2009 04:53:02 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754523AbZLARwV (ORCPT ); Tue, 1 Dec 2009 12:52:21 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754518AbZLARwU (ORCPT ); Tue, 1 Dec 2009 12:52:20 -0500 Received: from casper.infradead.org ([85.118.1.10]:38058 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754515AbZLARwR (ORCPT ); Tue, 1 Dec 2009 12:52:17 -0500 Received: from [187.5.57.15] (helo=doppio.ghostprotocols.net) by casper.infradead.org with esmtpsa (Exim 4.69 #1 (Red Hat Linux)) id 1NFWti-0004Cw-K5; Tue, 01 Dec 2009 17:52:23 +0000 Received: by doppio.ghostprotocols.net (Postfix, from userid 500) id DCA7E367; Tue, 1 Dec 2009 15:52:16 -0200 (BRST) From: Arnaldo Carvalho de Melo To: "David S. Miller" Cc: netdev@vger.kernel.org, Jean-Mickael Guerin , Arnaldo Carvalho de Melo Subject: [PATCH 1/1] net: compat_sys_recvmmsg user timespec arg can be NULL Date: Tue, 1 Dec 2009 15:52:16 -0200 Message-Id: <1259689936-27570-1-git-send-email-acme@infradead.org> X-Mailer: git-send-email 1.6.2.5 X-SRS-Rewrite: SMTP reverse-path rewritten from by casper.infradead.org See http://www.infradead.org/rpr.html Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jean-Mickael Guerin We must test if user timespec is non-NULL before copying from userpace, same as sys_recvmmsg(). Commiter note: changed it so that we have just one branch. Signed-off-by: Jean-Mickael Guerin Signed-off-by: Arnaldo Carvalho de Melo --- net/compat.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/net/compat.c b/net/compat.c index 6a2f75f..e1a56ad 100644 --- a/net/compat.c +++ b/net/compat.c @@ -758,9 +758,13 @@ asmlinkage long compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg, { int datagrams; struct timespec ktspec; - struct compat_timespec __user *utspec = - (struct compat_timespec __user *)timeout; + struct compat_timespec __user *utspec; + if (timeout == NULL) + return __sys_recvmmsg(fd, (struct mmsghdr __user *)mmsg, vlen, + flags | MSG_CMSG_COMPAT, NULL); + + utspec = (struct compat_timespec __user *)timeout; if (get_user(ktspec.tv_sec, &utspec->tv_sec) || get_user(ktspec.tv_nsec, &utspec->tv_nsec)) return -EFAULT;