Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp2518280imm; Mon, 28 May 2018 09:35:40 -0700 (PDT) X-Google-Smtp-Source: AB8JxZowSj0sZA18ryOGHuCSEtqt5yupuFX96OeZcx5ttems0Dyf4tkTCtait+kVHfd1GUs5VL8j X-Received: by 2002:a17:902:6503:: with SMTP id b3-v6mr14258482plk.147.1527525340746; Mon, 28 May 2018 09:35:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527525340; cv=none; d=google.com; s=arc-20160816; b=X6bubxaW/SkQn2Dh1euJ7khaETCeX+zOwoxrgT54VVxcL8TOB6zSlvfb8CVwHtLDl/ WEbhdq2vop1ZhQdcEH5xNwySsbE8kl+0yfhRTza3W/RmxvH6cPpaNZxVgPVt7Qh4SnnL LoKdhbJkKQLttruCsmmaOdLdxgpEcK1R+6/qDTFdyWVJ6I7uKm5Oe9du46agn/jqETYG Wu/CIavXLDAuFapY54zmJhJRXC+zOflYbU0FtNO4A5GV7LEdIz+57dZ2OtAz86/gQvcL K3/V7W5e8Hw5mKC42BBkc5YGbyxkIHrIMOkn/K9+AXAf1wfxUacsdAn5UA0m4GVq4pv+ w5QA== 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:dkim-signature :arc-authentication-results; bh=oxn6ddCRmEFt91hJPeiuiprnuIlrMSSzIRKXlH6a4tc=; b=qx53wVpGNd6tn14JsqZtu2jdVQhKnARSN0M3fuFxR781BEIckYj4umpk2uU1r1ilyi YFNFjCUgFeAtPJm+oS2rhfE0C2BrMXGIYPcxgVHLjatHFKmI9rxh4wv4kfIlfFh2W5EA kXeis3EJDEqLq/jQY1/Uyt0DFV+gLOMEzTdvKIdxWsGjLf73T4CDIdXUJ6L+eSxrHbFi 9wQNUeFy2hviE+v3PMfDNPw50iaFnC0nEUX50SgL1QLGOsQx/SZ8Bf2V9eyoKuz4jbQ2 gT8jQ/+46kInTYAKGc7btLbPKZMhYuSmvCkhA0uNKylLVf5IE5drDhs77w50/tncPflH wryA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=DxMqBsou; 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 l4-v6si24918987pgn.54.2018.05.28.09.35.26; Mon, 28 May 2018 09:35:40 -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; dkim=pass header.i=@kernel.org header.s=default header.b=DxMqBsou; 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 S934794AbeE1KIk (ORCPT + 99 others); Mon, 28 May 2018 06:08:40 -0400 Received: from mail.kernel.org ([198.145.29.99]:56632 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934751AbeE1KId (ORCPT ); Mon, 28 May 2018 06:08:33 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 36BAA2086D; Mon, 28 May 2018 10:08:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1527502112; bh=QvUwr1jR/yAwxI3bAkJDlYWHahiOLjJ3LlZFT1YiB9A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=DxMqBsouGmeUv57Kuh0sMTZX0pYzt/qSxGVfwOP5YWKqqxGzQmiJcNJPU6pZRhYc0 tL1zEcxgXyzTZjBDfQwOSo6saYK+LYTxCktn4dUeViIQSMJtM7oRLEi+tFr5EB+G38 Ql0XMxui6N2IWyN909FMoKpMMDr11NLB2CFh5ANo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Julian Wiedmann , Sebastian Ott , Martin Schwidefsky , Sasha Levin Subject: [PATCH 3.18 065/185] s390/cio: fix return code after missing interrupt Date: Mon, 28 May 2018 12:01:46 +0200 Message-Id: <20180528100056.384660327@linuxfoundation.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180528100050.700971285@linuxfoundation.org> References: <20180528100050.700971285@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 3.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Sebastian Ott [ Upstream commit 770b55c995d171f026a9efb85e71e3b1ea47b93d ] When a timeout occurs for users of ccw_device_start_timeout we will stop the IO and call the drivers int handler with the irb pointer set to ERR_PTR(-ETIMEDOUT). Sometimes however we'd set the irb pointer to ERR_PTR(-EIO) which is not intended. Just set the correct value in all codepaths. Reported-by: Julian Wiedmann Signed-off-by: Sebastian Ott Signed-off-by: Martin Schwidefsky Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/s390/cio/device_fsm.c | 6 ++++-- drivers/s390/cio/io_sch.h | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) --- a/drivers/s390/cio/device_fsm.c +++ b/drivers/s390/cio/device_fsm.c @@ -784,6 +784,7 @@ ccw_device_online_timeout(struct ccw_dev ccw_device_set_timeout(cdev, 0); cdev->private->iretry = 255; + cdev->private->async_kill_io_rc = -ETIMEDOUT; ret = ccw_device_cancel_halt_clear(cdev); if (ret == -EBUSY) { ccw_device_set_timeout(cdev, 3*HZ); @@ -860,7 +861,7 @@ ccw_device_killing_irq(struct ccw_device /* OK, i/o is dead now. Call interrupt handler. */ if (cdev->handler) cdev->handler(cdev, cdev->private->intparm, - ERR_PTR(-EIO)); + ERR_PTR(cdev->private->async_kill_io_rc)); } static void @@ -877,7 +878,7 @@ ccw_device_killing_timeout(struct ccw_de ccw_device_online_verify(cdev, 0); if (cdev->handler) cdev->handler(cdev, cdev->private->intparm, - ERR_PTR(-EIO)); + ERR_PTR(cdev->private->async_kill_io_rc)); } void ccw_device_kill_io(struct ccw_device *cdev) @@ -885,6 +886,7 @@ void ccw_device_kill_io(struct ccw_devic int ret; cdev->private->iretry = 255; + cdev->private->async_kill_io_rc = -EIO; ret = ccw_device_cancel_halt_clear(cdev); if (ret == -EBUSY) { ccw_device_set_timeout(cdev, 3*HZ); --- a/drivers/s390/cio/io_sch.h +++ b/drivers/s390/cio/io_sch.h @@ -155,6 +155,7 @@ struct ccw_device_private { unsigned long intparm; /* user interruption parameter */ struct qdio_irq *qdio_data; struct irb irb; /* device status */ + int async_kill_io_rc; struct senseid senseid; /* SenseID info */ struct pgid pgid[8]; /* path group IDs per chpid*/ struct ccw1 iccws[2]; /* ccws for SNID/SID/SPGID commands */