From patchwork Thu May 4 16:51:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sumit Semwal X-Patchwork-Id: 98546 Delivered-To: patch@linaro.org Received: by 10.140.89.200 with SMTP id v66csp698203qgd; Thu, 4 May 2017 09:52:26 -0700 (PDT) X-Received: by 10.99.114.6 with SMTP id n6mr46972149pgc.175.1493916746426; Thu, 04 May 2017 09:52:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1493916746; cv=none; d=google.com; s=arc-20160816; b=n52flv+v+Wql0KCI4Cu7UfFLmGPXxVthHO9evg9kH7wV/UcsiGuT62xZtFmUe+TYnh mqx+a2Z0LmdnRw8MrbC3HdJGnEeaM9xd7Xr7BZXgHEssCRw3L6lWmy3l7F4SBNho2C8Q BfarR53QWMYSTobofE+Y5d69IU3EYb8j7v6Mll8HNQBJp6ZPXoGzoDWNu3zJdmARarI9 qkOKB6VEH2HfNG3wIjrALQP96F5WPXotJCZKdV5pQi3JaWKychdUpVr3tYnYodH2LugJ uMx/SDs50iSsHYNH7tZKq86XpTUbUvbjyX7hEGxbgR8b8MR/Gb4hHo3PCcIcSSqDZ3pM k7ZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=KbsqZLvC88g0S0VUOEAs67FzhissASqsuIj1qjkRWQw=; b=ELGEemUuFhcUrmkzQyCy4YQj7C827xmmKwIu32mgsEIMpc1KwZPU3ZjuKoWV1ZdtIk Jnn1pAx+9SZ/z2bRGj/77tvURq4DSXqS2BqBafmkBISvKrdBDCvvpEwleLbs03TeBQsE 4AhtkGxHJamgIFm4ES7wbjKVM7MyXve6yZufBV4C1nFTp1Xxi5TmZUAW/iy+ZRSwnIAp Gp00dG/9XLJjns3PHIj1BRFoh5mgRmlyp3mo2e6CQ3Jkm9ug/1GJtdiUqN2Eek/8g0X4 34qVQs6/PIPpNu8iSAF/Ym4o7DcWyEqUpXmkJgVPcIKRWFX8EFLob1eeHkzYaT/kEVdo /cbw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org; spf=pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n5si2533622pgk.367.2017.05.04.09.52.26; Thu, 04 May 2017 09:52:26 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org; spf=pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755450AbdEDQwZ (ORCPT + 6 others); Thu, 4 May 2017 12:52:25 -0400 Received: from mail-pg0-f43.google.com ([74.125.83.43]:34790 "EHLO mail-pg0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755232AbdEDQwZ (ORCPT ); Thu, 4 May 2017 12:52:25 -0400 Received: by mail-pg0-f43.google.com with SMTP id v1so11484123pgv.1 for ; Thu, 04 May 2017 09:52:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=KbsqZLvC88g0S0VUOEAs67FzhissASqsuIj1qjkRWQw=; b=MXmhfTZzOhQCjozjSLKRozDx1YurHy0PPWaH17Xws3+FywjW07snuAUIS+7ueJTCqh 66IlAY5MBE55uRw7xsi2KTUHPi8YUoKZFOepageVrOt5DZhouVKcMmrKFGxcXY0VHKn4 vYoAXLbjTxBrTcY70qJL4v2wwr6zfIZfb7FKU= 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:in-reply-to :references; bh=KbsqZLvC88g0S0VUOEAs67FzhissASqsuIj1qjkRWQw=; b=pMipfIyfhgoEBS1W6c1WPGdvXLaaTCeuPAjAsloDjYFNBy+ADNPgozt2CLx1mdgTck rGI66WeW5d7OE4F+MdeUY4Aq5XBEh6W88CV5N5JwP8u4daDCCeCWm0t13/DEnFH4NaNO IBhbdY9AreuebMRpa9xOjW55rSQZpqVKx9+1jfN8beJJBIytO/hbqB4lyfEB4Ydb4hj/ IAW9p9FQhF+WRmOJGW4Y+H1uIV+yZ+BKYFOgZc2D/Ix5+yS8mNJXbFjTQ1ttAd6BOunX 3uazj+GLRTDcMmkvieAYEXjEg5QhTH2f6vcOExTZQYQSXSFhOHIExVgleSastTXUnkqP Co1A== X-Gm-Message-State: AN3rC/5/Ee009i2CT3nM2wJwKDB3F74BX1fgLaopmoYYhXSuqtzIDq/5 OE+lbJhkeWElJ9Cr X-Received: by 10.98.151.17 with SMTP id n17mr12063812pfe.138.1493916744333; Thu, 04 May 2017 09:52:24 -0700 (PDT) Received: from phantom.lan ([106.51.225.38]) by smtp.gmail.com with ESMTPSA id w85sm4946121pfk.62.2017.05.04.09.52.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 04 May 2017 09:52:23 -0700 (PDT) From: Sumit Semwal To: stable@vger.kernel.org Cc: Uma Krishnan , "Martin K . Petersen" , Sumit Semwal Subject: [PATCH for-4.4 1/4] scsi: cxlflash: Scan host only after the port is ready for I/O Date: Thu, 4 May 2017 22:21:57 +0530 Message-Id: <1493916720-8819-2-git-send-email-sumit.semwal@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493916720-8819-1-git-send-email-sumit.semwal@linaro.org> References: <1493916720-8819-1-git-send-email-sumit.semwal@linaro.org> Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Uma Krishnan [ Upstream commit bbbfae962b7c221237c0f92547ee0c83f7204747 ] When a port link is established, the AFU sends a 'link up' interrupt. After the link is up, corresponding initialization steps are performed on the card. Following that, when the card is ready for I/O, the AFU sends 'login succeeded' interrupt. Today, cxlflash invokes scsi_scan_host() upon receipt of both interrupts. SCSI commands sent to the port prior to the 'login succeeded' interrupt will fail with 'port not available' error. This is not desirable. Moreover, when async_scan is active for the host, subsequent scan calls are terminated with error. Due to this, the scsi_scan_host() call performed after 'login succeeded' interrupt could portentially return error and the devices may not be scanned properly. To avoid this problem, scsi_scan_host() should be called only after the 'login succeeded' interrupt. Signed-off-by: Uma Krishnan Acked-by: Matthew R. Ochs Signed-off-by: Martin K. Petersen Signed-off-by: Sumit Semwal --- drivers/scsi/cxlflash/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.7.4 diff --git a/drivers/scsi/cxlflash/main.c b/drivers/scsi/cxlflash/main.c index 2882bca..6150d29 100644 --- a/drivers/scsi/cxlflash/main.c +++ b/drivers/scsi/cxlflash/main.c @@ -1137,7 +1137,7 @@ static const struct asyc_intr_info ainfo[] = { {SISL_ASTATUS_FC0_LOGI_F, "login failed", 0, CLR_FC_ERROR}, {SISL_ASTATUS_FC0_LOGI_S, "login succeeded", 0, SCAN_HOST}, {SISL_ASTATUS_FC0_LINK_DN, "link down", 0, 0}, - {SISL_ASTATUS_FC0_LINK_UP, "link up", 0, SCAN_HOST}, + {SISL_ASTATUS_FC0_LINK_UP, "link up", 0, 0}, {SISL_ASTATUS_FC1_OTHER, "other error", 1, CLR_FC_ERROR | LINK_RESET}, {SISL_ASTATUS_FC1_LOGO, "target initiated LOGO", 1, 0}, {SISL_ASTATUS_FC1_CRC_T, "CRC threshold exceeded", 1, LINK_RESET}, @@ -1145,7 +1145,7 @@ static const struct asyc_intr_info ainfo[] = { {SISL_ASTATUS_FC1_LOGI_F, "login failed", 1, CLR_FC_ERROR}, {SISL_ASTATUS_FC1_LOGI_S, "login succeeded", 1, SCAN_HOST}, {SISL_ASTATUS_FC1_LINK_DN, "link down", 1, 0}, - {SISL_ASTATUS_FC1_LINK_UP, "link up", 1, SCAN_HOST}, + {SISL_ASTATUS_FC1_LINK_UP, "link up", 1, 0}, {0x0, "", 0, 0} /* terminator */ }; From patchwork Thu May 4 16:51:58 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sumit Semwal X-Patchwork-Id: 98547 Delivered-To: patch@linaro.org Received: by 10.140.89.200 with SMTP id v66csp698232qgd; Thu, 4 May 2017 09:52:29 -0700 (PDT) X-Received: by 10.84.138.193 with SMTP id 59mr58475637plp.184.1493916749304; Thu, 04 May 2017 09:52:29 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n5si2533622pgk.367.2017.05.04.09.52.29; Thu, 04 May 2017 09:52:29 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org; spf=pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755918AbdEDQw2 (ORCPT + 6 others); Thu, 4 May 2017 12:52:28 -0400 Received: from mail-pg0-f53.google.com ([74.125.83.53]:32988 "EHLO mail-pg0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755533AbdEDQw1 (ORCPT ); Thu, 4 May 2017 12:52:27 -0400 Received: by mail-pg0-f53.google.com with SMTP id y4so11518569pge.0 for ; Thu, 04 May 2017 09:52:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=TwEVcVjLgxwKMQvde8lRV4hMbU+uepILzS+eLsAbWKE=; b=TWaA2z2/4mQMhO2R1aTIphemw+Zlh0SC6/AZRARJYAWwu4+k0LpKcmIH830i84t1qK yqOKrOrKuZ0myS4fgzTUjsMcorf3hmpISZPSRnoHmQhhomEtv+j7c/yO5y68Gy33Hrhb 2ciVhwujCFU96P+ZW5fm0dW0tvW5PN56o7qrA= 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:in-reply-to :references; bh=TwEVcVjLgxwKMQvde8lRV4hMbU+uepILzS+eLsAbWKE=; b=Ztvaqtc0gHZQXPAm0MfbUcwhu7k1+9aXXxuk88m1vzdKzgUPzXbREGvAjUNinLfSkW RN1jbwdyNxFKAQJUY5RaACRutL4MrkLrLpSIyxsRpfqyI1c9XZYuI8Ha6on9bRMWDvCf UXbXGclgAFpR6QbWX6VO8A9IbxjijZ76zkHVv3k5y4UNIyoB+O1Piyo5xT92e61pGzfV SzOtckbS9r5MngXfrWI1iZfPeyBx5v6aKa+Va6EKPhh9c2oi5A7YfjCGdfzJIUNr26Pk mO1HI6OjKtlLBrEQAbOiqjtLnh/ra7MnXDVb2Tb0glZbRL5hC8OlGx1nwkhJMdnNbp0w pQLw== X-Gm-Message-State: AN3rC/5Ds37J0SWch1Y8GSZX/pdW6Cqaxfpzvg6ralQhrr73qUsMsD1p f90H6+mJunesVRuq X-Received: by 10.98.24.213 with SMTP id 204mr11487840pfy.237.1493916746956; Thu, 04 May 2017 09:52:26 -0700 (PDT) Received: from phantom.lan ([106.51.225.38]) by smtp.gmail.com with ESMTPSA id w85sm4946121pfk.62.2017.05.04.09.52.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 04 May 2017 09:52:26 -0700 (PDT) From: Sumit Semwal To: stable@vger.kernel.org Cc: "Matthew R. Ochs" , "Martin K . Petersen" , Sumit Semwal Subject: [PATCH for-4.4 2/4] scsi: cxlflash: Fix to avoid EEH and host reset collisions Date: Thu, 4 May 2017 22:21:58 +0530 Message-Id: <1493916720-8819-3-git-send-email-sumit.semwal@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493916720-8819-1-git-send-email-sumit.semwal@linaro.org> References: <1493916720-8819-1-git-send-email-sumit.semwal@linaro.org> Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: "Matthew R. Ochs" [ Upstream commit 1d3324c382b1a617eb567e3650dcb51f22dfec9a ] The EEH reset handler is ignorant to the current state of the driver when processing a frozen event and initiating a device reset. This can be an issue if an EEH event occurs while a user or stack initiated reset is executing. More specifically, if an EEH occurs while the SCSI host reset handler is active, the reset initiated by the EEH thread will likely collide with the host reset thread. This can leave the device in an inconsistent state, or worse, cause a system crash. As a remedy, the EEH handler is updated to evaluate the device state and take appropriate action (proceed, wait, or disconnect host). The host reset handler is also updated to handle situations where an EEH occurred during a host reset. In such situations, the host reset handler will delay reporting back a success to give the EEH reset an opportunity to complete. Signed-off-by: Matthew R. Ochs Acked-by: Uma Krishnan Signed-off-by: Martin K. Petersen Signed-off-by: Sumit Semwal --- drivers/scsi/cxlflash/main.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) -- 2.7.4 diff --git a/drivers/scsi/cxlflash/main.c b/drivers/scsi/cxlflash/main.c index 6150d29..d0eed07 100644 --- a/drivers/scsi/cxlflash/main.c +++ b/drivers/scsi/cxlflash/main.c @@ -1962,6 +1962,11 @@ retry: * cxlflash_eh_host_reset_handler() - reset the host adapter * @scp: SCSI command from stack identifying host. * + * Following a reset, the state is evaluated again in case an EEH occurred + * during the reset. In such a scenario, the host reset will either yield + * until the EEH recovery is complete or return success or failure based + * upon the current device state. + * * Return: * SUCCESS as defined in scsi/scsi.h * FAILED as defined in scsi/scsi.h @@ -1993,7 +1998,8 @@ static int cxlflash_eh_host_reset_handler(struct scsi_cmnd *scp) } else cfg->state = STATE_NORMAL; wake_up_all(&cfg->reset_waitq); - break; + ssleep(1); + /* fall through */ case STATE_RESET: wait_event(cfg->reset_waitq, cfg->state != STATE_RESET); if (cfg->state == STATE_NORMAL) @@ -2534,6 +2540,9 @@ static void drain_ioctls(struct cxlflash_cfg *cfg) * @pdev: PCI device struct. * @state: PCI channel state. * + * When an EEH occurs during an active reset, wait until the reset is + * complete and then take action based upon the device state. + * * Return: PCI_ERS_RESULT_NEED_RESET or PCI_ERS_RESULT_DISCONNECT */ static pci_ers_result_t cxlflash_pci_error_detected(struct pci_dev *pdev, @@ -2547,6 +2556,10 @@ static pci_ers_result_t cxlflash_pci_error_detected(struct pci_dev *pdev, switch (state) { case pci_channel_io_frozen: + wait_event(cfg->reset_waitq, cfg->state != STATE_RESET); + if (cfg->state == STATE_FAILTERM) + return PCI_ERS_RESULT_DISCONNECT; + cfg->state = STATE_RESET; scsi_block_requests(cfg->host); drain_ioctls(cfg); From patchwork Thu May 4 16:51:59 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sumit Semwal X-Patchwork-Id: 98548 Delivered-To: patch@linaro.org Received: by 10.140.89.200 with SMTP id v66csp698247qgd; Thu, 4 May 2017 09:52:31 -0700 (PDT) X-Received: by 10.99.189.2 with SMTP id a2mr47045500pgf.85.1493916751595; Thu, 04 May 2017 09:52:31 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n5si2533622pgk.367.2017.05.04.09.52.31; Thu, 04 May 2017 09:52:31 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org; spf=pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755232AbdEDQwa (ORCPT + 6 others); Thu, 4 May 2017 12:52:30 -0400 Received: from mail-pg0-f54.google.com ([74.125.83.54]:34814 "EHLO mail-pg0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755533AbdEDQwa (ORCPT ); Thu, 4 May 2017 12:52:30 -0400 Received: by mail-pg0-f54.google.com with SMTP id v1so11485278pgv.1 for ; Thu, 04 May 2017 09:52:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=39JnE8eeNdvjzOz7jFkvQV2d45d5kCVs3Ednq6F0ol8=; b=Pj5KOoI/SVou4gbRU8mxXohwHUuSWhZ8DVJAN//goesZVGiNjWrA41wEqG3oVe30tE 3iJBbcV/gx+4ordf14Hs3CZ23qW3Ea3sOcvdQM6WLDygJ/T2DzAGvH9UuXnIcZcY8qBc 8x4Bb2rBuFjHbOa/kL+lLqqpsg9tjNz8Qx+Ag= 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:in-reply-to :references; bh=39JnE8eeNdvjzOz7jFkvQV2d45d5kCVs3Ednq6F0ol8=; b=Wooiw8T5Nr12CQk7Pbf2LaVilBckFelWigNVNaCvnXvtrbmcKk4DL2Yh5CX+TmzKRq NXjqjssBhgODPjHwEL2MaAdr6cUlvXx+vgBs9zhTFuPDqtfsnOnxZp3kIG2gRBgUI3XK biHgkj6fvibHvnsYfnol3QMQ2yKTQ8LJOqmLf0li+g2IeBu7WZP7/Y5TUYPv5yPu2k4Q eR9L1P5+n70HKN0HtKQzcPD1gADdENdk6e4JN+ATqrQ9g2gxn9j4LWTtxL+h7Ap/2i/P EQi2Gok2UzABw/Q0M+mZJzgm5On7oxu17PkpRsHXODc8gzllNrfXuZjpQTHd6f7T8hsy 2D6Q== X-Gm-Message-State: AN3rC/5gcsfUSCNRzvuEz1e83beKBDuXpbOpSuaGxoZVlhDExr46an+V aU9fNH6Thk8O7y0e X-Received: by 10.98.222.70 with SMTP id h67mr11727375pfg.63.1493916749602; Thu, 04 May 2017 09:52:29 -0700 (PDT) Received: from phantom.lan ([106.51.225.38]) by smtp.gmail.com with ESMTPSA id w85sm4946121pfk.62.2017.05.04.09.52.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 04 May 2017 09:52:28 -0700 (PDT) From: Sumit Semwal To: stable@vger.kernel.org Cc: "Matthew R. Ochs" , "Martin K . Petersen" , Sumit Semwal Subject: [PATCH for-4.4 3/4] scsi: cxlflash: Improve EEH recovery time Date: Thu, 4 May 2017 22:21:59 +0530 Message-Id: <1493916720-8819-4-git-send-email-sumit.semwal@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493916720-8819-1-git-send-email-sumit.semwal@linaro.org> References: <1493916720-8819-1-git-send-email-sumit.semwal@linaro.org> Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: "Matthew R. Ochs" [ Upstream commit 05dab43230fdc0d14ca885b473a2740fe017ecb1 ] When an EEH occurs during device initialization, the port timeout logic can cause excessive delays as MMIO reads will fail. Depending on where they are experienced, these delays can lead to a prolonged reset, causing an unnecessary triggering of other timeout logic in the SCSI stack or user applications. To expedite recovery, the port timeout logic is updated to decay the timeout at a much faster rate when in the presence of a likely EEH frozen event. Signed-off-by: Matthew R. Ochs Acked-by: Uma Krishnan Signed-off-by: Martin K. Petersen Signed-off-by: Sumit Semwal --- drivers/scsi/cxlflash/main.c | 4 ++++ 1 file changed, 4 insertions(+) -- 2.7.4 diff --git a/drivers/scsi/cxlflash/main.c b/drivers/scsi/cxlflash/main.c index d0eed07..0b09673 100644 --- a/drivers/scsi/cxlflash/main.c +++ b/drivers/scsi/cxlflash/main.c @@ -996,6 +996,8 @@ static int wait_port_online(__be64 __iomem *fc_regs, u32 delay_us, u32 nretry) do { msleep(delay_us / 1000); status = readq_be(&fc_regs[FC_MTIP_STATUS / 8]); + if (status == U64_MAX) + nretry /= 2; } while ((status & FC_MTIP_STATUS_MASK) != FC_MTIP_STATUS_ONLINE && nretry--); @@ -1027,6 +1029,8 @@ static int wait_port_offline(__be64 __iomem *fc_regs, u32 delay_us, u32 nretry) do { msleep(delay_us / 1000); status = readq_be(&fc_regs[FC_MTIP_STATUS / 8]); + if (status == U64_MAX) + nretry /= 2; } while ((status & FC_MTIP_STATUS_MASK) != FC_MTIP_STATUS_OFFLINE && nretry--); From patchwork Thu May 4 16:52:00 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sumit Semwal X-Patchwork-Id: 98549 Delivered-To: patch@linaro.org Received: by 10.140.89.200 with SMTP id v66csp698282qgd; Thu, 4 May 2017 09:52:35 -0700 (PDT) X-Received: by 10.84.210.43 with SMTP id z40mr58586049plh.155.1493916755505; Thu, 04 May 2017 09:52:35 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n5si2533622pgk.367.2017.05.04.09.52.35; Thu, 04 May 2017 09:52:35 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org; spf=pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755929AbdEDQwe (ORCPT + 6 others); Thu, 4 May 2017 12:52:34 -0400 Received: from mail-pf0-f180.google.com ([209.85.192.180]:36781 "EHLO mail-pf0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755699AbdEDQwd (ORCPT ); Thu, 4 May 2017 12:52:33 -0400 Received: by mail-pf0-f180.google.com with SMTP id q66so10361105pfi.3 for ; Thu, 04 May 2017 09:52:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=sf9c2xsI4mkH1Cm2ug8D8R2+zfNCxPk50zK5N5Ftx3s=; b=M23AGeIIJJoOmhs2Yubr50CWonKeKdvz9Cs6wCXWLs8Hn5/VkFVkCYafDUluklhs3N T1HiwFClYUvihewLO8NbkGAda6qQvpQpHEcmrrfjrCQk4cDKCoLDspxQ/xzWaxa1azC/ FMNFMOtTiB9Hb5pR1oLnc6kxcoFHFP2LQTIck= 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:in-reply-to :references; bh=sf9c2xsI4mkH1Cm2ug8D8R2+zfNCxPk50zK5N5Ftx3s=; b=TjeDkMv5Y9xo/oV0yn13nSFO8Ya+gFbsC9j4PoVrmcPEP99ldpIVyf/9n4ZIDd5ayg 6yCf8cTpq6LHxfIzccj+p+UA+ptj2ajOKMMo1o7dt9jb6zPcO/fVTo3JfDPYyF0WByzz 48uTJDPh1/+2/9qVKdvTSo72PfOZVL1RkYvXt9mfI3KlJuDzALI+lEzTxbIkjC70u9Du nBmixH3bsnPIlnL7MF79WY8DEJLOQReIj/v2WoaFqaV0G5UcilbP3dwc67Uo67kEApU5 m44ShckVBdGm/1kTM+DkCNUD4MeaXMTgLjw+n9bCmQQaZzq5eKSO+GAcFLAK3TXE0goB Ydbg== X-Gm-Message-State: AN3rC/4UQpY7zAz4qzuPk8kiD33+M5cvk+Fr4nlES50rVSDc1PUc6hNW uRo7b2mW/Q4gudwB X-Received: by 10.84.175.132 with SMTP id t4mr19431990plb.180.1493916752509; Thu, 04 May 2017 09:52:32 -0700 (PDT) Received: from phantom.lan ([106.51.225.38]) by smtp.gmail.com with ESMTPSA id w85sm4946121pfk.62.2017.05.04.09.52.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 04 May 2017 09:52:31 -0700 (PDT) From: Sumit Semwal To: stable@vger.kernel.org Cc: Gabriel Krisman Bertazi , "Guilherme G . Piccoli" , Greg Kroah-Hartman , Sumit Semwal Subject: [PATCH for-4.4 4/4] 8250_pci: Fix potential use-after-free in error path Date: Thu, 4 May 2017 22:22:00 +0530 Message-Id: <1493916720-8819-5-git-send-email-sumit.semwal@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493916720-8819-1-git-send-email-sumit.semwal@linaro.org> References: <1493916720-8819-1-git-send-email-sumit.semwal@linaro.org> Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Gabriel Krisman Bertazi [ Upstream commit c130b666a9a711f985a0a44b58699ebe14bb7245 ] Commit f209fa03fc9d ("serial: 8250_pci: Detach low-level driver during PCI error recovery") introduces a potential use-after-free in case the pciserial_init_ports call in serial8250_io_resume fails, which may happen if a memory allocation fails or if the .init quirk failed for whatever reason). If this happen, further pci_get_drvdata will return a pointer to freed memory. This patch reworks the PCI recovery resume hook to restore the old priv structure in this case, which should be ok, since the ports were already detached. Such error during recovery causes us to give up on the recovery. Fixes: f209fa03fc9d ("serial: 8250_pci: Detach low-level driver during PCI error recovery") Reported-by: Michal Suchanek Signed-off-by: Gabriel Krisman Bertazi Signed-off-by: Guilherme G. Piccoli Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sumit Semwal --- drivers/tty/serial/8250/8250_pci.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) -- 2.7.4 diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c index 83ff172..cf3da51 100644 --- a/drivers/tty/serial/8250/8250_pci.c +++ b/drivers/tty/serial/8250/8250_pci.c @@ -5850,17 +5850,15 @@ static pci_ers_result_t serial8250_io_slot_reset(struct pci_dev *dev) static void serial8250_io_resume(struct pci_dev *dev) { struct serial_private *priv = pci_get_drvdata(dev); - const struct pciserial_board *board; + struct serial_private *new; if (!priv) return; - board = priv->board; - kfree(priv); - priv = pciserial_init_ports(dev, board); - - if (!IS_ERR(priv)) { - pci_set_drvdata(dev, priv); + new = pciserial_init_ports(dev, priv->board); + if (!IS_ERR(new)) { + pci_set_drvdata(dev, new); + kfree(priv); } }