From patchwork Mon Aug 27 02:47:13 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xi Wang X-Patchwork-Id: 180114 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.180.67]) by ozlabs.org (Postfix) with ESMTP id 66F962C00D2 for ; Mon, 27 Aug 2012 12:48:01 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751576Ab2H0CrX (ORCPT ); Sun, 26 Aug 2012 22:47:23 -0400 Received: from mail-vc0-f174.google.com ([209.85.220.174]:60577 "EHLO mail-vc0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751010Ab2H0CrV (ORCPT ); Sun, 26 Aug 2012 22:47:21 -0400 Received: by vcbfk26 with SMTP id fk26so3930771vcb.19 for ; Sun, 26 Aug 2012 19:47:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer; bh=IeYY/bW0bw3iz0xMAe6trp2EL2cAoBN33UkR5oJU1Tg=; b=pl9N/VEiX3ZDva4sfUkTKezaYJoqAOMneBJsry1hA7Lq87AkuUzDcfP/Cns0rr4ESd 25pI0NgePddJI4/bSowQMQ9c9g2j5utF8jpTjGtM/hM0ro6rCg3aAPiaFY6568HTaENG IZe4giTodkp2Zju0AkNcKSt+BivrUASotFf7Yp1G0oGxLa0MBV2lMnFcqvmMjvYnA1wP r1eja1JcrqtV8Bpxnb3IXa7vU863g20I4iTdoL9lqJo1V9RB7TXK6jHJlNNaDZwEGgY3 0YQxk6krfd1VifrbxKgGfP/+yTlY7+/z6bMOGY+9Tp0C0JP1iZGAbXpW0T+KhLKDUaU9 Ze5Q== Received: by 10.52.21.82 with SMTP id t18mr8820031vde.66.1346035641076; Sun, 26 Aug 2012 19:47:21 -0700 (PDT) Received: from hchen.lcs.mit.edu (hchen.csail.mit.edu. [18.26.5.5]) by mx.google.com with ESMTPS id i13sm9120025vdj.4.2012.08.26.19.47.20 (version=TLSv1/SSLv3 cipher=OTHER); Sun, 26 Aug 2012 19:47:20 -0700 (PDT) From: Xi Wang To: "David S. Miller" Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Xi Wang Subject: [PATCH] af_unix: fix shutdown parameter checking Date: Sun, 26 Aug 2012 22:47:13 -0400 Message-Id: <1346035633-2492-1-git-send-email-xi.wang@gmail.com> X-Mailer: git-send-email 1.7.9.5 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Return -EINVAL rather than 0 given an invalid "mode" parameter. Signed-off-by: Xi Wang --- Another way to check "mode" is as in inet_shutdown(): mode++; if ((mode & ~SHUTDOWN_MASK) || !mode) return -EINVAL; This patch uses a simpler form, to check if "mode" is in the range SHUT_RD ... SHUT_RDWR. --- net/unix/af_unix.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index c5ee4ff..8a84ab6 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -2060,10 +2060,14 @@ static int unix_shutdown(struct socket *sock, int mode) struct sock *sk = sock->sk; struct sock *other; - mode = (mode+1)&(RCV_SHUTDOWN|SEND_SHUTDOWN); - - if (!mode) - return 0; + if (mode < SHUT_RD || mode > SHUT_RDWR) + return -EINVAL; + /* This maps: + * SHUT_RD (0) -> RCV_SHUTDOWN (1) + * SHUT_WR (1) -> SEND_SHUTDOWN (2) + * SHUT_RDWR (2) -> SHUTDOWN_MASK (3) + */ + ++mode; unix_state_lock(sk); sk->sk_shutdown |= mode;