Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp58569pxf; Wed, 24 Mar 2021 20:58:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx62QFYNF50d1TFLh6Cd7Kvg9IA2hdLig7lQwb6fGraRweamX1c6nOKHMqh2/dgDOFdby8J X-Received: by 2002:aa7:cb97:: with SMTP id r23mr6777014edt.106.1616644712455; Wed, 24 Mar 2021 20:58:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616644712; cv=none; d=google.com; s=arc-20160816; b=hf8yNqS0ErdS6aS4MuXpLxYnvQg80Bm77FXarmRvcyK5mfr/pGj1njSvyQnRYa/Rub EoeZmnHOaN9fYnSWvqyQ3p++GKzBrXJEtnIVL8XlEErJJ+PA7qE2/rwxNWn4CD5XOg9m W3+sJ7G+2PqUS7f0IhtZ3T3LGGTc4ZdnqZYYkopiu6t3dlyzpRZwTT/d301yFIZGS6GD ryoCtQOghiSLi2gK4icJXpzcfuQT8xckKqL40c0+oURp6S6WwuNYyvke/OTDP/+0/5Oh FKQTaJ9URZxO1Uf9OdGI4d8suCCYjKIchvFbDcJSjoM/5qUpJKlcMAZ6PA41rjD0Sn0m j8PQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=eVpGrEygcy2e1UvFskjYhfZ1evBZRrTkC1tagE5VrTU=; b=wjzpQ6vIg+h25ksbGk3VbAh54I4bXjOOCqjjn86GLj853gsmw2YUNb574DOIS4a8AA DSSkgs57G2ZR33vPQo9XwWu7GGb8nw8EyxkU2ZUuXeO4g+pAeXsqhoB519DoK6lb2kCy 7gXXdSUBpKKILxdt8KRv+2yOrFxtMoVjUaDoU8sThCLkK93DwqYD7XhNfDcM+wXNiM+M B990ABakOw96+USUzXmtmp2K+DzGYjaJDWdUhF5bwyxp5WVcEDuIXHE8tZaMb/G45ZBl WDkQ8lGk7XPFa3SoBH40wiIRAo4HqXPMJFc2p2E3Vx6fII1dhxA5gJkWsK69SYeW1Coj Tyxw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i23si3117531ejv.110.2021.03.24.20.58.07; Wed, 24 Mar 2021 20:58:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229664AbhCYDvh (ORCPT + 99 others); Wed, 24 Mar 2021 23:51:37 -0400 Received: from szxga07-in.huawei.com ([45.249.212.35]:14868 "EHLO szxga07-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229590AbhCYDv2 (ORCPT ); Wed, 24 Mar 2021 23:51:28 -0400 Received: from DGGEMS414-HUB.china.huawei.com (unknown [172.30.72.60]) by szxga07-in.huawei.com (SkyGuard) with ESMTP id 4F5WLs2Lt0z9sjR; Thu, 25 Mar 2021 11:49:25 +0800 (CST) Received: from use12-sp2.huawei.com (10.67.189.174) by DGGEMS414-HUB.china.huawei.com (10.3.19.214) with Microsoft SMTP Server id 14.3.498.0; Thu, 25 Mar 2021 11:51:17 +0800 From: Xiaoming Ni To: , , , , , , , , , , , CC: , , Subject: [PATCH resend 4/4] nfc: Avoid endless loops caused by repeated llcp_sock_connect() Date: Thu, 25 Mar 2021 11:51:13 +0800 Message-ID: <20210325035113.49323-5-nixiaoming@huawei.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210325035113.49323-1-nixiaoming@huawei.com> References: <20210325035113.49323-1-nixiaoming@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Originating-IP: [10.67.189.174] X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When sock_wait_state() returns -EINPROGRESS, "sk->sk_state" is LLCP_CONNECTING. In this case, llcp_sock_connect() is repeatedly invoked, nfc_llcp_sock_link() will add sk to local->connecting_sockets twice. sk->sk_node->next will point to itself, that will make an endless loop and hang-up the system. To fix it, check whether sk->sk_state is LLCP_CONNECTING in llcp_sock_connect() to avoid repeated invoking. Fixes: b4011239a08e ("NFC: llcp: Fix non blocking sockets connections") Reported-by: "kiyin(尹亮)" Link: https://www.openwall.com/lists/oss-security/2020/11/01/1 Cc: #v3.11 Signed-off-by: Xiaoming Ni --- net/nfc/llcp_sock.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/net/nfc/llcp_sock.c b/net/nfc/llcp_sock.c index 59172614b249..a3b46f888803 100644 --- a/net/nfc/llcp_sock.c +++ b/net/nfc/llcp_sock.c @@ -673,6 +673,10 @@ static int llcp_sock_connect(struct socket *sock, struct sockaddr *_addr, ret = -EISCONN; goto error; } + if (sk->sk_state == LLCP_CONNECTING) { + ret = -EINPROGRESS; + goto error; + } dev = nfc_get_device(addr->dev_idx); if (dev == NULL) { -- 2.27.0