Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3704662imm; Mon, 18 Jun 2018 02:38:53 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJnQuPSMQ+m0DfU3OaLUXZPZnte35RHmU6wmKuoiPXk3uvp7wH7ddHfPLqEzkm1FossaQH+ X-Received: by 2002:a62:e03:: with SMTP id w3-v6mr12685750pfi.173.1529314733931; Mon, 18 Jun 2018 02:38:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529314733; cv=none; d=google.com; s=arc-20160816; b=BuK6mGZQ51nDPUkIZo5K6z/oZOftWiDuenUvL4hpYXOr1+hbQc+aCER+ZLfwiB7Qz5 MVd5KNGbnXvtvGRe8z9/pOiWQZuu7NiGilPmKN56RLKgKnx20c+pVK8iuoZILU05bxu5 VNPjy8fZg2xNhTm9B9ZhIsNhAndv1pMidtkqdWTeDUztt+l9vifJTlBbbusLP6HEhYuc jG8t+mI7+KllqEwpOPZkqMUZt9bpK8Je7voOEnf3nSAAFUuXzy0gtD0rdSBx6A42CLX3 gUB0gvCOhFOtKs/kHoIoRSE1zpvYwlsoRkYGeA2bGMNGBrdaE1IZo7uOUvZmXl5ImbtA g3jg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=wXNDk6DGpLLRVMTrk71zNhRzExVjbedf8qucYJxe1aU=; b=NWQ0hclpGuD/euipy8m43yJnqWewiLabk1P5PqmE9hMOL/IZS0eNAfylm6SlOpx70B kH0wsxdIlFd4yC9xDa0XR/YonY9OMu9G5X5M6CIpHaHteTFJNZ5VntG0naqfxEBqHiCf 9n2a+NIYAa6tu7kTlj5r37qqc5iGNahXazHJaSz9bJSdT3Nx/FzIFK9dtD6O7X4MnGwY +EXgaXNedEte5KSe/CqMXXt98y1D3EPS711bAJE16uJE8SCqImAPDaWK/zzTW8F2GYYb 4vl2QVDKv5rg865eyjJ8l8jaOvyD1jkmFgTvjNJgY5u9bvtzCzz0uEPaWMH1zGc85Ft9 rftA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h71-v6si14199677pfe.332.2018.06.18.02.38.40; Mon, 18 Jun 2018 02:38:53 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935887AbeFRIXc (ORCPT + 99 others); Mon, 18 Jun 2018 04:23:32 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:55806 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933385AbeFRIX2 (ORCPT ); Mon, 18 Jun 2018 04:23:28 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 7CF95C49; Mon, 18 Jun 2018 08:23:27 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Srinivas Eeda , Junxiao Bi , Zhu Yanjun , Yuval Shaia , Doug Ledford , Sasha Levin Subject: [PATCH 4.16 132/279] IB/rxe: avoid double kfree_skb Date: Mon, 18 Jun 2018 10:11:57 +0200 Message-Id: <20180618080614.292699812@linuxfoundation.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180618080608.851973560@linuxfoundation.org> References: <20180618080608.851973560@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.16-stable review patch. If anyone has any objections, please let me know. ------------------ From: Zhu Yanjun [ Upstream commit 9fd4350ba8953804f05215999e11a6cfb7b41f2b ] When skb is sent, it will pass the following functions in soft roce. rxe_send [rdma_rxe] ip_local_out __ip_local_out ip_output ip_finish_output ip_finish_output2 dev_queue_xmit __dev_queue_xmit dev_hard_start_xmit In the above functions, if error occurs in the above functions or iptables rules drop skb after ip_local_out, kfree_skb will be called. So it is not necessary to call kfree_skb in soft roce module again. Or else crash will occur. The steps to reproduce: server client --------- --------- |1.1.1.1|<----rxe-channel--->|1.1.1.2| --------- --------- On server: rping -s -a 1.1.1.1 -v -C 10000 -S 512 On client: rping -c -a 1.1.1.1 -v -C 10000 -S 512 The kernel configs CONFIG_DEBUG_KMEMLEAK and CONFIG_DEBUG_OBJECTS are enabled on both server and client. When rping runs, run the following command in server: iptables -I OUTPUT -p udp --dport 4791 -j DROP Without this patch, crash will occur. CC: Srinivas Eeda CC: Junxiao Bi Signed-off-by: Zhu Yanjun Reviewed-by: Yuval Shaia Signed-off-by: Doug Ledford Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/infiniband/sw/rxe/rxe_req.c | 1 - drivers/infiniband/sw/rxe/rxe_resp.c | 6 +----- 2 files changed, 1 insertion(+), 6 deletions(-) --- a/drivers/infiniband/sw/rxe/rxe_req.c +++ b/drivers/infiniband/sw/rxe/rxe_req.c @@ -728,7 +728,6 @@ next_wqe: rollback_state(wqe, qp, &rollback_wqe, rollback_psn); if (ret == -EAGAIN) { - kfree_skb(skb); rxe_run_task(&qp->req.task, 1); goto exit; } --- a/drivers/infiniband/sw/rxe/rxe_resp.c +++ b/drivers/infiniband/sw/rxe/rxe_resp.c @@ -742,7 +742,6 @@ static enum resp_states read_reply(struc err = rxe_xmit_packet(rxe, qp, &ack_pkt, skb); if (err) { pr_err("Failed sending RDMA reply.\n"); - kfree_skb(skb); return RESPST_ERR_RNR; } @@ -954,10 +953,8 @@ static int send_ack(struct rxe_qp *qp, s } err = rxe_xmit_packet(rxe, qp, &ack_pkt, skb); - if (err) { + if (err) pr_err_ratelimited("Failed sending ack\n"); - kfree_skb(skb); - } err1: return err; @@ -1150,7 +1147,6 @@ static enum resp_states duplicate_reques if (rc) { pr_err("Failed resending result. This flow is not handled - skb ignored\n"); rxe_drop_ref(qp); - kfree_skb(skb_copy); rc = RESPST_CLEANUP; goto out; }