Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp8109098imu; Tue, 4 Dec 2018 03:09:23 -0800 (PST) X-Google-Smtp-Source: AFSGD/XhVHMlGzPcM9McZ+Oot8soc+IntWFswJkQSlznOYv4VgYd1xPP0ebuUZhaSwFkU/uaRvDA X-Received: by 2002:a62:d148:: with SMTP id t8mr20092957pfl.52.1543921763341; Tue, 04 Dec 2018 03:09:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543921763; cv=none; d=google.com; s=arc-20160816; b=C55+Yi8Yk/jg8xc9cOhOzgzGjsdvYDyQX7SPKTwn+R8dN3Es08zvxyTuF972dHjAiM 8plZjedMsQHRVwcBpfqkKhy3frcvrAsojWA33WVuhb9zKaHZhaegETIAyjJkMJ0laZdE Rf/eD+/eZ8OdCbkAUOdFjAmspTnlvS+amCtQwqFmCeOcxegW+Txlptp5EFKQhQaCY+nV 3Gw5wUhz4jY/xIRC3fEq5K6ejk5MdHqb52ImyyhUpK9t20abRmTDuIgLHLFxLSO6OFct xNee0AEfSZHKn/VhnEvdGWNBrQGtP1rRWVFPoy2vzBbOu4yKA8NdsERppcVuzRtYH2Qh ugUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=P7U7WyoMngvZzu2Q4viEP3LqmgAy+R33NPCadYUmGAc=; b=sKVJ+AKiyl/zZlp3zczjdYsvOouANtMBLWKf8SlWxuF16B8olo5yNCwSAEkR0i1vCd BkV2C+77Wbkj8sVu7g1EulaDw9dVS2c2IxP/OnOQTJCipLaDLSwW4YmON7Kzk5dNsNVl AMU1RopPjYGzpOgZckKSgfsq+tN5vdWTusEuGnrseu5x/aaDDmFPYK2Kod038SxmQxYl tOu7tL+9ScuCwSs1pOgddDWPRN8+Iz0jcFicxRTu8Ov51QXXoXnr/1DOM9mbjJAOxpDd fnLpkxJUe/q1CH+Q0ifgoXElTg1wg5T545RDZtG6v9jZye3JUVUZWH02TCEjbPybUIWe Fg+w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=RXgXTXP1; 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 g184si17321854pfb.288.2018.12.04.03.09.07; Tue, 04 Dec 2018 03:09:23 -0800 (PST) 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=RXgXTXP1; 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 S1726603AbeLDLI1 (ORCPT + 99 others); Tue, 4 Dec 2018 06:08:27 -0500 Received: from mail.kernel.org ([198.145.29.99]:57798 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728618AbeLDLIZ (ORCPT ); Tue, 4 Dec 2018 06:08:25 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (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 A7C7D214E0; Tue, 4 Dec 2018 11:08:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1543921705; bh=UuDUsQgxe5R8e6McoqwvWsyCFnlyb151xyolkaCDfoM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RXgXTXP1M0twUdhS/1xX6qTX3P4z1hNGP9zSk+W1jDRqWNGhvdZuSVE7eT8m4jVJQ DHQBlSFg7to0yOMWzm7bsbfjV15efqixMOQiH5FMvT91FUzKQyd9Z5gvwEX83dal3D NJSKhPPipVNrOcJ+lxhv1EIzONhJNONkNsuTw7os= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Ravi Nankani , Maximilian Heyne , Christoph Hellwig , Torsten Mehlan , Uwe Dannowski , Amit Shah , David Woodhouse , Jens Axboe Subject: [PATCH 4.9 27/50] fs: fix lost error code in dio_complete Date: Tue, 4 Dec 2018 11:50:22 +0100 Message-Id: <20181204103715.881910575@linuxfoundation.org> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181204103714.485546262@linuxfoundation.org> References: <20181204103714.485546262@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ From: Maximilian Heyne commit 41e817bca3acd3980efe5dd7d28af0e6f4ab9247 upstream. commit e259221763a40403d5bb232209998e8c45804ab8 ("fs: simplify the generic_write_sync prototype") reworked callers of generic_write_sync(), and ended up dropping the error return for the directio path. Prior to that commit, in dio_complete(), an error would be bubbled up the stack, but after that commit, errors passed on to dio_complete were eaten up. This was reported on the list earlier, and a fix was proposed in https://lore.kernel.org/lkml/20160921141539.GA17898@infradead.org/, but never followed up with. We recently hit this bug in our testing where fencing io errors, which were previously erroring out with EIO, were being returned as success operations after this commit. The fix proposed on the list earlier was a little short -- it would have still called generic_write_sync() in case `ret` already contained an error. This fix ensures generic_write_sync() is only called when there's no pending error in the write. Additionally, transferred is replaced with ret to bring this code in line with other callers. Fixes: e259221763a4 ("fs: simplify the generic_write_sync prototype") Reported-by: Ravi Nankani Signed-off-by: Maximilian Heyne Reviewed-by: Christoph Hellwig CC: Torsten Mehlan CC: Uwe Dannowski CC: Amit Shah CC: David Woodhouse CC: stable@vger.kernel.org Signed-off-by: Jens Axboe Signed-off-by: Greg Kroah-Hartman --- fs/direct-io.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/fs/direct-io.c +++ b/fs/direct-io.c @@ -278,8 +278,8 @@ static ssize_t dio_complete(struct dio * */ dio->iocb->ki_pos += transferred; - if (dio->op == REQ_OP_WRITE) - ret = generic_write_sync(dio->iocb, transferred); + if (ret > 0 && dio->op == REQ_OP_WRITE) + ret = generic_write_sync(dio->iocb, ret); dio->iocb->ki_complete(dio->iocb, ret, 0); }