Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp3525037pxf; Mon, 15 Mar 2021 11:29:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzwG3lVNerVoOAjoDVoIQQzJB9UpHHhha5zKGD8+oDlU2wDHOauzB0LOJMtv7FuU1VWyMWy X-Received: by 2002:a17:906:eb89:: with SMTP id mh9mr25741670ejb.122.1615832971101; Mon, 15 Mar 2021 11:29:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1615832971; cv=none; d=google.com; s=arc-20160816; b=poY4gW7F6FVuYR05GFSnHkzJTCiVagxtYQsOXULqHTmVl9QVGp0ROxC8Vnk6wrkWnz cxdDMiT1o460R/fcJJtWR1hcWW6Pu3b3XCXovEku8fb31WnO59Jjc6Vgxqx77M4C77Wg v2JB96IA/HXLd9phEbhktkoPvrtffqwfhqnnyR3qqXvq0TQ3V71MYVf6Qj+y94AWEDS5 zT7gKZOkZKd3riCarRJGQUlnyN5dpKY3jDURl8q7xpec7Xud3z6CpN74/Dow6c1tPrYj xb+wRiq6vnJPYIFhWr2uIji2iUkcfOudMPEa/30vSMLE1k7UAlBl+/8Cgv6XexwXX0G6 JXzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=wBTQNkxk77MgctJ3kzzshKqWQG8GV+ZAmM9Q4JlUKbg=; b=LHz3qXtmgRPUEQkAAm3yLVptMaNZVkvqzOc1d8fLMtzNOggYL6TZ2nhHOY5hTcOHTE cX5nc86qK9MiVfhT0C/X4OBaJJ95fDExNcv6cp8eDGaQ0f9PstqHASy3KAiucWRI4L8S 3B/97iMrvP9HovzS/F8sMzd7LSEWYP4oKB+4TDArUK/9q/0EU+Cj5Te3laTCdb5bU78V QnMEaKeZ3j2a4UUyhA2S31GzrgoA92Z6jWg4ZmmOeS/fY3zOYzgiIAsAYe3E0SKbRa6+ dcs+RnMraolND0zUBuEyB78qwSDR+Yo54A7fqLmnF3aL0zExOa9N87FxTcWOf+V2EUPg DRVA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=af9cwx1m; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m9si11745174ejj.339.2021.03.15.11.29.03; Mon, 15 Mar 2021 11:29:31 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=af9cwx1m; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231219AbhCOOdl (ORCPT + 99 others); Mon, 15 Mar 2021 10:33:41 -0400 Received: from mail.kernel.org ([198.145.29.99]:35186 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233286AbhCOOBW (ORCPT ); Mon, 15 Mar 2021 10:01:22 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 4831F64F69; Mon, 15 Mar 2021 14:00:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1615816859; bh=ksqVK6wcCdbE1lO+qgCPDlFPW+GJdXp7WZ6R2M3NcWs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=af9cwx1mAHKJ3rW6r7tuwSGWkUxjfQb8bqMZpfF5JYU6phOo0OiVLxmwD+QxpRuQ0 m3A+jqR1RLBpw6EZT07KYHyog329VRpJ6/eT9kb84tvJYz8Wo+nNWt/zE4Ie9MExY+ YgvYTHrM3PjrhGYtVhWGr4vqPiYp2v9m+K9yTfBk= From: gregkh@linuxfoundation.org To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Minchan Kim , Sergey Senozhatsky , Colin Ian King , John Dias , Andrew Morton , Linus Torvalds Subject: [PATCH 5.4 156/168] zram: fix return value on writeback_store Date: Mon, 15 Mar 2021 14:56:28 +0100 Message-Id: <20210315135555.473229970@linuxfoundation.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210315135550.333963635@linuxfoundation.org> References: <20210315135550.333963635@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Greg Kroah-Hartman From: Minchan Kim commit 57e0076e6575a7b7cef620a0bd2ee2549ef77818 upstream. writeback_store's return value is overwritten by submit_bio_wait's return value. Thus, writeback_store will return zero since there was no IO error. In the end, write syscall from userspace will see the zero as return value, which could make the process stall to keep trying the write until it will succeed. Link: https://lkml.kernel.org/r/20210312173949.2197662-1-minchan@kernel.org Fixes: 3b82a051c101("drivers/block/zram/zram_drv.c: fix error return codes not being returned in writeback_store") Signed-off-by: Minchan Kim Cc: Sergey Senozhatsky Cc: Colin Ian King Cc: John Dias Cc: Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- drivers/block/zram/zram_drv.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -627,7 +627,7 @@ static ssize_t writeback_store(struct de struct bio_vec bio_vec; struct page *page; ssize_t ret = len; - int mode; + int mode, err; unsigned long blk_idx = 0; if (sysfs_streq(buf, "idle")) @@ -719,12 +719,17 @@ static ssize_t writeback_store(struct de * XXX: A single page IO would be inefficient for write * but it would be not bad as starter. */ - ret = submit_bio_wait(&bio); - if (ret) { + err = submit_bio_wait(&bio); + if (err) { zram_slot_lock(zram, index); zram_clear_flag(zram, index, ZRAM_UNDER_WB); zram_clear_flag(zram, index, ZRAM_IDLE); zram_slot_unlock(zram, index); + /* + * Return last IO error unless every IO were + * not suceeded. + */ + ret = err; continue; }