Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp2467916imm; Mon, 28 May 2018 08:38:28 -0700 (PDT) X-Google-Smtp-Source: AB8JxZq+eexJCTRR0IboIqcKttLtbqJyZIHLOosXT+ylQ/RsRKktjhk4TAZHreR0HoelZA6Ay3D7 X-Received: by 2002:a17:902:ab98:: with SMTP id f24-v6mr13875845plr.144.1527521908088; Mon, 28 May 2018 08:38:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527521908; cv=none; d=google.com; s=arc-20160816; b=NL3565qLhpKusyAONECeeQiZnzu1ALEUdV7EJiIBg95Ln+0+rblkq5KR+VoIJZfPh9 bKebSqSC+9gwA67uIMaIPj+U1GlWDpcH9BVprXUle7M3selkjY6izTVgU7YcdX2HiRDJ 0ajw/ks+TKETIZj7UZllwGcCP6Dijgz0adj6LenPFHd8UKb74S4rN5jDva5tV11u3b3N TS1qRi1M/8FLtsVWF/DUU67LixqERjzpR/HLpUstBqip7U6anK52MFCtN/UHBVP5hHsB QbXwmQzZi3lXJQDSJHIk0d8wxmQcCIko3c/PJlJraVxuMfq/hyeojtOsJAvWVq7xtom8 fHOg== 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=AYfCPxeZgTbkmi3p4sCZCjHHD4FHPD0oZTqZVTqHjDU=; b=hvjzjhPGA3s2AKcoG6yEn70UDn6rCE13G0cNkZKpN+DGbPHJqGc5Vd0P/PENLgTmk/ jDu5nr3cWSEOFM33LQ6+JMok851WZnW3wGrpp2uvjhlVDXFcYNkWSrWvWB1BRb1UYbFV whR8e17jTuCbAHIYvVxBg6Hg8KZ7X/JAl3moKG8tEPN5fJtwUs2UBRXg6Fe2PpaFJfY/ EwP1pSc+EJjiDR81dvjz6mpSNlZ/c1i38eHpmY+56euUOMWHrv4ZfXiTvauLnim/5g9m wWQy42QiHjQPNivaVSD2p4Hr9IKfT6a47gkocif8AUwaoIB+VDQmK1KeqlnSVG7YiYqg tPpA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=slz32YD4; 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 38-v6si30889485plc.446.2018.05.28.08.38.13; Mon, 28 May 2018 08:38:28 -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=slz32YD4; 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 S969074AbeE1Phl (ORCPT + 99 others); Mon, 28 May 2018 11:37:41 -0400 Received: from mail.kernel.org ([198.145.29.99]:38470 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S968769AbeE1KSX (ORCPT ); Mon, 28 May 2018 06:18:23 -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 4D0D8208A5; Mon, 28 May 2018 10:18:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1527502702; bh=NNRhgiJ6md80Mbt0gUSepvd3XyAOfie/6wY19aIVUUk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=slz32YD4jEqueM6j5DpQY1D1dPlAFUqsn7xZozarqCLkMMhH5On8xFyDYAgOGoUd/ rCArfxouZnMiY++pKNlt+VzEOhkZEr8NIKHrCE2nwqjDS9Fdxpb0azwTBXT5IKDIOW NX0yJWbnPrvJyzGD7RVQMt42aBprHVB3oWbMLmRg= 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 4.4 098/268] s390/cio: fix return code after missing interrupt Date: Mon, 28 May 2018 12:01:12 +0200 Message-Id: <20180528100213.356478526@linuxfoundation.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180528100202.045206534@linuxfoundation.org> References: <20180528100202.045206534@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.4-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 @@ -822,6 +822,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); @@ -898,7 +899,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 @@ -915,7 +916,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) @@ -923,6 +924,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 */