From patchwork Fri Apr 19 23:51:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1088253 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="NTG4n/xH"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 44mCSC66Qvz9s4Y for ; Sat, 20 Apr 2019 09:51:55 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726533AbfDSXvy (ORCPT ); Fri, 19 Apr 2019 19:51:54 -0400 Received: from mail-qt1-f193.google.com ([209.85.160.193]:39278 "EHLO mail-qt1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725817AbfDSXvy (ORCPT ); Fri, 19 Apr 2019 19:51:54 -0400 Received: by mail-qt1-f193.google.com with SMTP id f13so6530502qto.6 for ; Fri, 19 Apr 2019 16:51:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=tOeGx+GpbiGZOfhvvg3leBM3MPCo3jRoHtBwfq3d/bY=; b=NTG4n/xHlI81WQECVyAAgjbWS+vOCzCZUJoMdyR2FFcm5g8sI/tpn/szlXnW4Wb3F6 bfH6Z5MXgSgOhI6NmXmKtlYKNWesG3dCcK5ndSLD4OcooUAAKGMbwZTS6+FBWruPCeYd C+sCVUxeFmKpLCvILNwSHHC7uVA37zI0qANQHcNH3rLnOQySbOdjPGC0POi+41WWg3+Z PCupQqaJA9Uuix3CxVhC0QMQsuTDlr+nhDVNV4K18MBeKERVcvagC63weOaqn8HkwJz5 qy7VwmQ/ze6AmimARaj5BU4HAT0DN/PFySlD+aa/rO3f2DO7jKMPs3u/iQwf+S1K/AsQ /SCA== 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:mime-version :content-transfer-encoding; bh=tOeGx+GpbiGZOfhvvg3leBM3MPCo3jRoHtBwfq3d/bY=; b=TaBSBbpXzNYeAV/iVv7XnytGZvUj1ZHDEGvw094QEzxbWm0b7s+jIC8ul2NVCXXm9P xKmUaLEGb24kg+1fF4Krdhrc9juQ0hs+OsT2MArbiC1CVO1w3Ej+DlrwUSi/Og1Rt9/9 bCjVCacuGNxUSI4234pKRGUrYyfEruQdW2iZfIA1LaeDZJftmfEv2DbyOe1jDQmopNfo np5PVPqfwE0nNB9FmCSTTSOd6IC9XuvkUtafDjtFY69wTdF7IckSmOC7LcUM2AmL6w+9 Vlh1Z1L1tc3ZmQcxlecsNj0kWEmXAZShzPyzNf6vEJuBFNzbLkzfgt79J1yVJEHeVMss dg0Q== X-Gm-Message-State: APjAAAUpFZL2plCkQZjexdZn9QA58jI09tCzoUI4eK+5jAWexYe0cxjE gZUxxg2KUxFpsghJ+eoW8E3gnA== X-Google-Smtp-Source: APXvYqytvFoQcVa3sR6wjP6RXMlVkmsElL5pcky5MqAI+RM29CZcu9Kp+GH6Yz3/1qVBG2p72Xnsgg== X-Received: by 2002:aed:3b5c:: with SMTP id q28mr5432120qte.381.1555717912133; Fri, 19 Apr 2019 16:51:52 -0700 (PDT) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id z85sm1729451qka.18.2019.04.19.16.51.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 19 Apr 2019 16:51:51 -0700 (PDT) From: Jakub Kicinski To: davem@davemloft.net Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, alexei.starovoitov@gmail.com, davejwatson@fb.com, borisp@mellanox.com, aviadye@mellanox.com, Jakub Kicinski , Dirk van der Merwe Subject: [PATCH net] net/tls: avoid potential deadlock in tls_set_device_offload_rx() Date: Fri, 19 Apr 2019 16:51:38 -0700 Message-Id: <20190419235138.31310-1-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org If device supports offload, but offload fails tls_set_device_offload_rx() will call tls_sw_free_resources_rx() which (unhelpfully) releases and reacquires the socket lock. For a small fix release and reacquire the device_offload_lock. Fixes: 4799ac81e52a ("tls: Add rx inline crypto offload") Signed-off-by: Jakub Kicinski Reviewed-by: Dirk van der Merwe --- net/tls/tls_device.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/tls/tls_device.c b/net/tls/tls_device.c index 9f3bdbc1e593..1b5f55cac613 100644 --- a/net/tls/tls_device.c +++ b/net/tls/tls_device.c @@ -904,7 +904,9 @@ int tls_set_device_offload_rx(struct sock *sk, struct tls_context *ctx) goto release_netdev; free_sw_resources: + up_read(&device_offload_lock); tls_sw_free_resources_rx(sk); + down_read(&device_offload_lock); release_ctx: ctx->priv_ctx_rx = NULL; release_netdev: