From patchwork Sat Dec 23 17:17:14 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Herbert X-Patchwork-Id: 852676 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=quantonium-net.20150623.gappssmtp.com header.i=@quantonium-net.20150623.gappssmtp.com header.b="HYbCN5lZ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3z3sWs0Hrdz9s7f for ; Sun, 24 Dec 2017 04:17:45 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756995AbdLWRRh (ORCPT ); Sat, 23 Dec 2017 12:17:37 -0500 Received: from mail-pg0-f52.google.com ([74.125.83.52]:41219 "EHLO mail-pg0-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753091AbdLWRRg (ORCPT ); Sat, 23 Dec 2017 12:17:36 -0500 Received: by mail-pg0-f52.google.com with SMTP id 77so2268386pgd.8 for ; Sat, 23 Dec 2017 09:17:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quantonium-net.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=dEBagB5xsmNuqW6J3ITg9phKjGpbZj08Wx0VYM9ThZM=; b=HYbCN5lZIoQEfqnUlLcUINbz05xaHWDVzN0aXYBwxE/85gQ+xOKlhwkJUqqFFeeES5 +rwnufZj2Zt1FZo7YU9BwfbGe+9iT76gNMIxxycKcosrU9talbbAwK+SH28xDSGVRl2U X47Ig3/Naw73Zfn1T10h4OVE3DTn9z+Yl9XmCumQDjsOX6gJilwFoLcDxRp1U75dWycB DTRH1JlpBwPfcNait/j7Z8qDA3d7Bo7uMQ69+Fb2+Ga5x7k8HNrBDINioeQLXfXacQT/ KuuXVxf+/O1Cpv1dEHXGVQ5rk2EWQENT96O36ndsJpjskjpSPPtUmwmayIhrlPrarOB7 XbZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=dEBagB5xsmNuqW6J3ITg9phKjGpbZj08Wx0VYM9ThZM=; b=XilQ/Qhwqu4nL9kh7mihFbWfL9Mm7Y+W83za91fnU6FZW0Uo27J5FUisutPHOf+hIk mI2Wke67jyh+MdAVfbsko99MBaK/2lrNNn9zgcZL6ZWxLHapEv0/V3KXcWUVljOHcv/p tB+lx3LERQmW1oeyJDBiJVwfrKEhSbpUkGAKyN10tEZh8vgGmutWKjnU/e3VwJLU7XJH 0QkzTyzlCWf4CQhU7U1vwb6I3D8idAlRd5EJ2rDx3tEElQnBOdQzW+oCgvZeNXx2ZJAV 0LDpss49Wz6cVcgusyXTwKp4SP0tkYinrIchFdwSBg4MYTrmAMujkJ2Gr+fkoASYkBV0 09Ow== X-Gm-Message-State: AKGB3mJF0HSwHTgBhGty8NMnXIAb0Z1UsO/RR7JAWEWsK9SXCn5QjdHo EBrz6IGNIERcR7I+8YNRueTDPQ== X-Google-Smtp-Source: ACJfBosFoXaJA00Z+OmHyVN6SBG8OJfqrhCPOXg6EKsk7OoyQZ0FnY/NVNyBiHoeW/EZp3/R8qevoA== X-Received: by 10.98.36.25 with SMTP id r25mr17831646pfj.72.1514049455453; Sat, 23 Dec 2017 09:17:35 -0800 (PST) Received: from localhost.localdomain (c-73-162-13-107.hsd1.ca.comcast.net. [73.162.13.107]) by smtp.gmail.com with ESMTPSA id o84sm53446109pfa.46.2017.12.23.09.17.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 23 Dec 2017 09:17:34 -0800 (PST) From: Tom Herbert To: davem@davemloft.net Cc: netdev@vger.kernel.org, dvyukov@google.com, rohit@quantonium.net, Tom Herbert Subject: [PATCH v2 net-next 0/2] kcm: Fix two locking issues Date: Sat, 23 Dec 2017 09:17:14 -0800 Message-Id: <20171223171716.16130-1-tom@quantonium.net> X-Mailer: git-send-email 2.11.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org One issue is lockdep warnings when sock_owned_by_user returns true in strparser. Fix is to add and call sock_owned_by_user_nocheck since the check for owned by user is not an error condition in this case. The other issue is a potential deadlock between TX and RX paths KCM socket lock and the psock socket lock are acquired in both the RX and TX path, however they take the locks in opposite order which can lead to deadlock. The fix is to add try_sock_lock to see if psock socket lock can get acquired in the TX path with KCM lock held. If not, then KCM socket is released and the psock socket lock and KCM socket lock are acquired in the same order as the RX path. Tested: Ran KCM traffic without incident. v2: Remove patches to address potential deadlock. I couldn't convince myself this is an issue after looking at the code some more. Tom Herbert (2): sock: Add sock_owned_by_user_nocheck strparser: Call sock_owned_by_user_nocheck include/net/sock.h | 5 +++++ net/strparser/strparser.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-)