From patchwork Mon Jul 11 20:51:26 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Soheil Hassas Yeganeh X-Patchwork-Id: 647087 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 3rpHMX4WzYz9sDk for ; Tue, 12 Jul 2016 06:51:52 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=sGIgeUQp; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932361AbcGKUvs (ORCPT ); Mon, 11 Jul 2016 16:51:48 -0400 Received: from mail-qk0-f196.google.com ([209.85.220.196]:34923 "EHLO mail-qk0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932221AbcGKUvr (ORCPT ); Mon, 11 Jul 2016 16:51:47 -0400 Received: by mail-qk0-f196.google.com with SMTP id q62so3640097qkf.2 for ; Mon, 11 Jul 2016 13:51:46 -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; bh=jzvXGcH0trPdjzr8pnIkrYTB1En93Y+OGhnnBLS5cZI=; b=sGIgeUQpswLSJ12uf5QZYA87XgrwryeImGBCU4T1xW4hNMJQBhbuqBpmHlWf+mJecO YsCeI2Mb21IXZ5y+8bC6PqmQnypxNJMw1ca9qMjIbdqSo1L+NRoQtBmz4yGeLWg3d5vm 9dZfmBzvlI88PbCnFR3fJTEIY+RB3CXnFRMCAUXUkpQdR5NnSac0Y3psLO/ja01n3VNZ zEyFwAd93A86rbD2PCpAcHBb+9dWjXlsWKr76Z5kn4OemSIWDbU6s5iodEnY5wPsKcWf 3ppwn0eUzHvy/DcjDvhh57Mf5oXcZzYKXWmVfEbf0OJO32cI5dK/vhD/oSQ154ic5UYz NBLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=jzvXGcH0trPdjzr8pnIkrYTB1En93Y+OGhnnBLS5cZI=; b=GJppQs+Q5C4E1IgvvIESW+Iiuk4haPriMlIcLVvUa4r6XZMt2IC3B6agg3aVkZ30tc 6yyDVr1edeIPs4J1CZrJVQhXgj3tEHX+CFziCDKQgbPGNaqhSVL6bSUjMbTVEw6AO4Vm zbbAiEQVUYr0bi+M6xFzTO/zg5PpVBye2E2bvk1euSkS7dGOFtZuYHzdU3qS/1vlx2NS 9DeIhMQrj+37+DSZWzRFyEWrNWm2NqazfH4VTdUTCmuFD7SjQvwF8+7Yv+FspKS9qgTr PGv9MNfcanyE9SxfJL5NgloYtBw30TPIwsbuaZJbELUtPVIbabsz7GQtexnSlFc53AzW wZPA== X-Gm-Message-State: ALyK8tJJ1ZF+ML5YV2TWF/OLvVvHBKdVFSU0piiQp+b9OZV0S99HjBVFTbH3QoyleBXnUA== X-Received: by 10.55.39.142 with SMTP id n136mr29114386qkn.149.1468270306066; Mon, 11 Jul 2016 13:51:46 -0700 (PDT) Received: from soheil.nyc.corp.google.com ([100.101.230.57]) by smtp.gmail.com with ESMTPSA id v19sm3069793qkl.22.2016.07.11.13.51.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 11 Jul 2016 13:51:45 -0700 (PDT) From: Soheil Hassas Yeganeh To: davem@davemloft.net, netdev@vger.kernel.org Cc: willemb@google.com, edumazet@google.com, Soheil Hassas Yeganeh Subject: [PATCH v2 net] sock: ignore SCM_RIGHTS and SCM_CREDENTIALS in __sock_cmsg_send Date: Mon, 11 Jul 2016 16:51:26 -0400 Message-Id: <1468270286-7411-1-git-send-email-soheil.kdev@gmail.com> X-Mailer: git-send-email 2.8.0.rc3.226.g39d4020 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Soheil Hassas Yeganeh Sergei Trofimovich reported that pulse audio sends SCM_CREDENTIALS as a control message to TCP. Since __sock_cmsg_send does not support SCM_RIGHTS and SCM_CREDENTIALS, it returns an error and hence breaks pulse audio over TCP. SCM_RIGHTS and SCM_CREDENTIALS are sent on the SOL_SOCKET layer but they semantically belong to SOL_UNIX. Since all cmsg-processing functions including sock_cmsg_send ignore control messages of other layers, it is best to ignore SCM_RIGHTS and SCM_CREDENTIALS for consistency (and also for fixing pulse audio over TCP). Fixes: c14ac9451c34 ("sock: enable timestamping using control messages") Signed-off-by: Soheil Hassas Yeganeh Reported-by: Sergei Trofimovich Tested-by: Sergei Trofimovich Cc: Eric Dumazet Cc: Willem de Bruijn --- net/core/sock.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/net/core/sock.c b/net/core/sock.c index 08bf97e..b7f1263 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -1938,6 +1938,10 @@ int __sock_cmsg_send(struct sock *sk, struct msghdr *msg, struct cmsghdr *cmsg, sockc->tsflags &= ~SOF_TIMESTAMPING_TX_RECORD_MASK; sockc->tsflags |= tsflags; break; + /* SCM_RIGHTS and SCM_CREDENTIALS are semantically in SOL_UNIX. */ + case SCM_RIGHTS: + case SCM_CREDENTIALS: + break; default: return -EINVAL; }