Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp1531138iog; Tue, 14 Jun 2022 07:54:00 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vkIDvT/jlWNhqpq8wemh7cPE2GsPS7AogQHNBOJTbNQWx0C1tjjXnPH+gA7VFlh9G8r8NC X-Received: by 2002:a17:902:900c:b0:168:dcbe:7c4a with SMTP id a12-20020a170902900c00b00168dcbe7c4amr4928170plp.165.1655218440137; Tue, 14 Jun 2022 07:54:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655218440; cv=none; d=google.com; s=arc-20160816; b=b3GuHT4SbgKxiZR9KSPKozbY+KUquDyk7I826qNwNnobwg+o8ph/6gZwSuoY2rue9J M9Y7XgjjwIT8Qw7Rs2zQ/v+59Za6vSic6aLwbhVk4O3SATUpCy6K0Dn3/EM1DpidIklI wndsvy7eaRhNwSKYcydSbnH/QX+lHIqBQ1amaWX0ut30PBBmsxOhdE5mM/KTQaCIA19h WNJmZtgiu1eLKD+tMRJfWzk5JyfXJ3nuVjsqtEjn5bPSjg2bOa7iOUBRIyhH5Ynw+JYV drPRAOSGYev8MzfN507XELe6BV+F14uWV/KGBku54BL08MTnbsRWGv31XwpjdQ8j9jzz Y8Ew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=YLoEie2c/c/Ol9tysPQeNCKttCEvsMGw+mU2Obntq+I=; b=XhWKyl0RCwfMo9xXATRZIDiKykWXUIWViN8LVHxmSuSr6bbHJoJOJXRkYIC5qgLijI 7KWNC+3+VdB6msuhLBKxSMNfvhhUj9FZDHy5t93KLac1T2DsoebMfWC5SkUlMDoBfM43 lvujEpHtjT2YZ34iHyId2Mis1iJwUIDMLS3xBTwz+Igv+mnBe1SAtgCHpIerxPfQdaHe eppkxUPEOgjebzlIHHdnIFG5dHAMx9mFegQqcf8sSaUv1dT/mkoanDZ7eeL32diAkR4M AkhBnhHnsOZp5we55tg5kihzTgEpM0noJwwQybKB0OeaBmhgSnl5Q0IXcwIHMh+O0G3b YzoQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=eBGQsLMh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d16-20020a056a00199000b005180d1a94e9si14929671pfl.287.2022.06.14.07.53.47; Tue, 14 Jun 2022 07:54:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=eBGQsLMh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244534AbiFNOr5 (ORCPT + 99 others); Tue, 14 Jun 2022 10:47:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43732 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244922AbiFNOrs (ORCPT ); Tue, 14 Jun 2022 10:47:48 -0400 Received: from mail-yb1-xb2a.google.com (mail-yb1-xb2a.google.com [IPv6:2607:f8b0:4864:20::b2a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EC3EA11451 for ; Tue, 14 Jun 2022 07:47:46 -0700 (PDT) Received: by mail-yb1-xb2a.google.com with SMTP id x38so15528296ybd.9 for ; Tue, 14 Jun 2022 07:47:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=YLoEie2c/c/Ol9tysPQeNCKttCEvsMGw+mU2Obntq+I=; b=eBGQsLMh3CZ6FqJwnBFrzfGDavEOm688kp752Oibj0m1wZbvntM/y7LvwxQ+XvgBT1 6AQ47zMh8QVRxtV5GKUVdWYaeNrxMtBlbNrHYUwezxM3DAyGeGVVbTJ7hl0oDVOTE+x3 +vhoFWBwhiydkB9pNsedV4Nk7zQrnixB8oi/nJmYZw7Qx/YXiA9tJt0TgnLuHZYQ052D 4lzal9ExBk/lDfPmbU1UdB6f9KmwQ8U5KORqGRhizv7djmQAu7SZZCQC3FzPqiWp8vhC w5bcf+d0gJfcjx8BLhdM51tta8rIgyO1wACXvJZQ+z69Hrug+C7DY8AO2l4lfCkW5k2M 1AbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=YLoEie2c/c/Ol9tysPQeNCKttCEvsMGw+mU2Obntq+I=; b=0/2GFIaNR4rYiIWVcSDuoCsPtApFsaREK47X4lTzc3Kfb4OvydDR+8Vujj7rhOs9ur J95v3g6siPb+Qr9jG4qmeEB6Vj/AWqmcz4siRXMQaf4fDEnPSI4TCZc4r2ZS/CwjRQyN e8ESMR2Hw3fE3IoinajStm7/2mPO3zGBQJCMVwXDK3F9fRjSDT32IeVB+gE+XjDZpaNP p3t8wXMyTyBKA1ve6/RX8hnIWo1KNIPWTtl2z1pxl+gutmijJbfZzR+wW3jpglq4L8Z6 qcdrmWS9sfduwykC1GAzs8aX+yMLyA7ZjJZcZGheTWpRo8l3aRUXVd8pJl0NYmIk0Luj LU1A== X-Gm-Message-State: AJIora87sr09Cc3j3TVBFNgjdcYFOudTJ7LR4o06MJcA/YjwAPTFxRV+ X+9CVoxIVudKr6SolYXMaLDN4l2P7PZsZw6h5kVFYg== X-Received: by 2002:a25:d649:0:b0:65c:9e37:8bb3 with SMTP id n70-20020a25d649000000b0065c9e378bb3mr5499677ybg.387.1655218065801; Tue, 14 Jun 2022 07:47:45 -0700 (PDT) MIME-Version: 1.0 References: <20220614092557.6713-1-duoming@zju.edu.cn> In-Reply-To: <20220614092557.6713-1-duoming@zju.edu.cn> From: Eric Dumazet Date: Tue, 14 Jun 2022 07:47:34 -0700 Message-ID: Subject: Re: [PATCH net v5] net: ax25: Fix deadlock caused by skb_recv_datagram in ax25_recvmsg To: Duoming Zhou Cc: linux-hams@vger.kernel.org, Paolo Abeni , jreuter@yaina.de, Ralf Baechle , David Miller , Jakub Kicinski , netdev , LKML , thomas@osterried.de Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-17.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jun 14, 2022 at 2:26 AM Duoming Zhou wrote: > > The skb_recv_datagram() in ax25_recvmsg() will hold lock_sock > and block until it receives a packet from the remote. If the client > doesn`t connect to server and calls read() directly, it will not > receive any packets forever. As a result, the deadlock will happen. > > The fail log caused by deadlock is shown below: > > This patch replaces skb_recv_datagram() with an open-coded variant of it > releasing the socket lock before the __skb_wait_for_more_packets() call > and re-acquiring it after such call in order that other functions that > need socket lock could be executed. > > what's more, the socket lock will be released only when recvmsg() will > block and that should produce nicer overall behavior. > > Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") > Suggested-by: Thomas Osterried > Signed-off-by: Duoming Zhou > Reported-by: Thomas Habets > Acked-by: Paolo Abeni > --- Reviewed-by: Eric Dumazet