Received: by 2002:a05:7412:37c9:b0:e2:908c:2ebd with SMTP id jz9csp2900892rdb; Fri, 22 Sep 2023 11:23:59 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG8gVTOxbA0niSJ4skFhX7czA2aTIiordg5KA7HNnjzX+z0Q0HtzCWRxDDdC48q26929qth X-Received: by 2002:a05:6358:7203:b0:139:9fc3:eade with SMTP id h3-20020a056358720300b001399fc3eademr424361rwa.29.1695407039621; Fri, 22 Sep 2023 11:23:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695407039; cv=none; d=google.com; s=arc-20160816; b=br89hKnQTDxFglf49RF/BbxuKm+5/m25P2FXg1ffFN2G9VnQ5emDra0L74/hNjAMqb WYNS/aOefI5zBES/dmjhUpf70CS2Vk88Pkk4Rxz3Nl0r8R9DmwmavdHRosS7xTIfs+Qj cOAA16g19j1OPwnYxS+IOYjeu0Nq5UM+J8C6sxexOobck9fp9UgO2XfwxyyDCjCupOqo V7wGwnuxEC+kHEC/p664UosW/4PMxyDXnITuHKy/VTVusQVva7S8NkbPtBxjDh4Ddkf1 qtLQZyegvwyCjueJz9sXB1MTCN/xM2Sl1N4yKgWrFvcnDh9Yy+mmbRJH2qhhaTyMLrVT G6NA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:mime-version:date :dkim-signature; bh=P7bK6hAXjxwm2ijcRkbUrk4xLVSp4X3nArYEjpbBtYs=; fh=dyNNpCu7V43msDa5WgfcZgZxVIIc1inDNrQ1SjhY8EE=; b=UILRNoHL2IskbjR1rdjyATAd+KZxXZdW+souMYqhk0XA6+/GUkcWn6LTt5CHnAzYgY 2/FNxXAfoQOcvD8nPXVWsPB63eU0dGE5hwubHpCdekLZA0O+nY7+Xran0JFQSAbmBqyQ tVIZ3gEaQ0wAxxgYVmS5BIjctKoDxqDHAn+YGTxtXplPanPr1JK6I1LSyePmzPfw19sB msjbWjTQm8bSY5oV5hUkvUZyk+UjA7Y1ZA4uYxjBWv6sZ6w8W482QTtELpNMBVSsN5Gj o61jcKTeY65sy0GKdxnLLz4xy+4tlEah9dNfGHTmHmWZVqSx1hHRP7Eyfu+uBEzXocr0 LaFw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=DAXFv3e5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id a185-20020a6390c2000000b00574035fd472si4292758pge.31.2023.09.22.11.23.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Sep 2023 11:23:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=DAXFv3e5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 661F383CF938; Fri, 22 Sep 2023 08:53:59 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230051AbjIVPxt (ORCPT + 99 others); Fri, 22 Sep 2023 11:53:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39224 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229698AbjIVPxs (ORCPT ); Fri, 22 Sep 2023 11:53:48 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 71F4583 for ; Fri, 22 Sep 2023 08:53:42 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-d81841ef79bso3306830276.1 for ; Fri, 22 Sep 2023 08:53:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1695398021; x=1696002821; darn=vger.kernel.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=P7bK6hAXjxwm2ijcRkbUrk4xLVSp4X3nArYEjpbBtYs=; b=DAXFv3e5pUF9pzB10KB8TtxXzK2gSyPdF7EAw/GwB5nE1zmwi8f0hApHd3bZIxa2BD 3Q8OxKq1c8+kOJfjArMAWN5qJEeWnqLv3xUA1k+HhTHSElaCC5GiDP5qg9g9eeyZDFir ytiq6/4irTp71UeD7lP4m8KIixKTKKoOl6WQdp08L9bYOeBwtFOifjwJH8U5a1l5rSE9 +VH2UogrMDjq9KPx4u+1Ye77DHcg76ye7SiIKnZpQ4B39TJq6X1/TP/LKo1VgbDIslU7 z98hZftyDIQJVdpZJrw+O/ZzcNk5JvHkzoBCy1t+TrbNdRFpfSpKD/jhMk2MSqsyVcqW KPWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695398021; x=1696002821; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=P7bK6hAXjxwm2ijcRkbUrk4xLVSp4X3nArYEjpbBtYs=; b=ohN7TCV5It42iSX3rYAk8bzu+Z2PwzRJL8HtuhNm7HSVleMp4gzQuLogBlyT9+pEgC SPURBe3nsy3lJSwyfGeHgYQI+KigES7F0IMUosp4VpUrnNiIHPKAmI4rhI59EEm9NOeZ MTCj9t36HokBqm4aCbrA1z4cCQsaizrxb3QwIcEzhREbbwEyPuWKAYlXgkwyponTlGZX HLhxE3au7qMpr5XcpDaDYP5MLGZuU8w02TViYrJGjWnVOVYaJk2CSusUzQN3G5fxdqs/ rP3ABptbkuV3bgilv4Yhcr3maaWWXFbstybmKeJN98jdxatsKrmElcnHhutC59oN6WkG RBmA== X-Gm-Message-State: AOJu0Ywza2367aCp04GNMCx2nRTMGAelRwK0UL4IJ5+U7VGdZoDER3Y1 AjXkoMYihE9PREu87goBJUnMYXq4SYaY X-Received: from bjg.c.googlers.com ([fda3:e722:ac3:cc00:2b:7d90:c0a8:415]) (user=bgeffon job=sendgmr) by 2002:a25:ae66:0:b0:d7e:79c3:cd0b with SMTP id g38-20020a25ae66000000b00d7e79c3cd0bmr114598ybe.3.1695398021726; Fri, 22 Sep 2023 08:53:41 -0700 (PDT) Date: Fri, 22 Sep 2023 11:53:36 -0400 Mime-Version: 1.0 X-Mailer: git-send-email 2.42.0.515.g380fc7ccd1-goog Message-ID: <20230922155336.507220-1-bgeffon@google.com> Subject: [PATCH] PM: hibernate: clean up sync_read handling in snapshot_write_next From: Brian Geffon To: "Rafael J . Wysocki" Cc: Pavel Machek , Len Brown , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Matthias Kaehlcke , Brian Geffon , stable@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-8.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Fri, 22 Sep 2023 08:53:59 -0700 (PDT) In snapshot_write_next sync_read is set and unset in three different spots unnecessiarly. As a result there is a subtle bug where the first page after the meta data has been loaded unconditionally sets sync_read to 0. If this first pfn was actually a highmem page then the returned buffer will be the global "buffer," and the page needs to be loaded synchronously. That is, I'm not sure we can always assume the following to be safe: handle->buffer = get_buffer(&orig_bm, &ca); handle->sync_read = 0; Because get_buffer can call get_highmem_page_buffer which can return 'buffer' The easiest way to address this is just set sync_read before snapshot_write_next returns if handle->buffer == buffer. Signed-off-by: Brian Geffon Cc: stable@vger.kernel.org --- kernel/power/snapshot.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c index 190ed707ddcc..362e6bae5891 100644 --- a/kernel/power/snapshot.c +++ b/kernel/power/snapshot.c @@ -2780,8 +2780,6 @@ int snapshot_write_next(struct snapshot_handle *handle) if (handle->cur > 1 && handle->cur > nr_meta_pages + nr_copy_pages + nr_zero_pages) return 0; - handle->sync_read = 1; - if (!handle->cur) { if (!buffer) /* This makes the buffer be freed by swsusp_free() */ @@ -2824,7 +2822,6 @@ int snapshot_write_next(struct snapshot_handle *handle) memory_bm_position_reset(&zero_bm); restore_pblist = NULL; handle->buffer = get_buffer(&orig_bm, &ca); - handle->sync_read = 0; if (IS_ERR(handle->buffer)) return PTR_ERR(handle->buffer); } @@ -2834,9 +2831,8 @@ int snapshot_write_next(struct snapshot_handle *handle) handle->buffer = get_buffer(&orig_bm, &ca); if (IS_ERR(handle->buffer)) return PTR_ERR(handle->buffer); - if (handle->buffer != buffer) - handle->sync_read = 0; } + handle->sync_read = (handle->buffer == buffer); handle->cur++; /* Zero pages were not included in the image, memset it and move on. */ -- 2.42.0.515.g380fc7ccd1-goog