Received: by 2002:ab2:6203:0:b0:1f5:f2ab:c469 with SMTP id o3csp2441924lqt; Mon, 22 Apr 2024 10:43:50 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCV2K4qstNIo36zfraZy3+ZW8L+693BhK0lci1KTlX2yxF/2BT5abPm6i3C7bHwKdafnUWtFMXAy9I4ELAWaMgqVRFtuuMc7v7JxDrGQ9g== X-Google-Smtp-Source: AGHT+IGRIu12HHOJzMj8/JyhL2jXibU/FiwtBiM3EvcB502oL415xxKrD51FCS/rhZ834tnHoABu X-Received: by 2002:a17:902:e74b:b0:1e5:375c:429a with SMTP id p11-20020a170902e74b00b001e5375c429amr15888093plf.17.1713807830240; Mon, 22 Apr 2024 10:43:50 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1713807830; cv=pass; d=google.com; s=arc-20160816; b=XUQxrr8vFMTw2bjCgt1H5KdaWTs47fXGfGbLrZqqPNiLDFzaY1uxitZdtLOOXr7ShT 2QPiJN7zsVkIOpI4InxgBnP7bVeECy7JNNnKD/Rt9dqyidUX6kVGOh3KiGIhWhf5x8p2 n6zSHogYiH0/ngz1rq+57p6TT6MT2wDtdAdVVKuzQwN3LEziaFlf34qeHORIsYlyZJWE DZVHpVeL2t7HFgVjhpVxh6A6tbEPTfnwDPqEyXzzzOmARrt0EUrh7N56ClkCqjovqAY+ Vb+ea6TDp6BAT2Iuqu4gofy1+Rzq5dPpi1hR3DEEFRZMezWyzlN1/Ysz7xlAshnYFwzQ MPcA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:message-id:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:date:dkim-signature; bh=T0VSzHwGHOz5OGuxpcZUIi3ZbES2QXe0izyLeD5/pVs=; fh=ozPnQLMzDt43SJp6S5H8bmIwrWVWJLjTZF5BUzWWisY=; b=kqy9Tz/DPLGSOZxu79NPQgwobvnujKvT9M3S/ZaG2dTkweBScGk+pVHK5K21ol4DjA fBbi6Vi+PpBTTm0QNG+ZmL4kQaeKLh7rlwUNLlSIwt0kqbyJyxU9llsZWJkCtMQuIQ2v VjrDr4v50HQGc0q5tPvDXJXqjymGzYkzBsFOJMkuciZQWONuoWijbiYsMVET/LAAerOn 9cN8mY7/JsbouuUVzsrB7QsgpUaWQrUOVm0MPIAfvY+dLHAR+c72YnKdTPd1gAOBlBsI ycUgx0Z46d3gj90YOBX+fHSlfvVpPLGdncHNwLUdibDgrTUnPuuI/6aPtZBaJMYwTlUF dh5w==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=Gul4CsuP; arc=pass (i=1 spf=pass spfdomain=flex--dtokazaki.bounces.google.com dkim=pass dkdomain=google.com dmarc=pass fromdomain=google.com); spf=pass (google.com: domain of linux-kernel+bounces-153803-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-153803-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id jh2-20020a170903328200b001e48dfdde4csi8097933plb.372.2024.04.22.10.43.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Apr 2024 10:43:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-153803-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=Gul4CsuP; arc=pass (i=1 spf=pass spfdomain=flex--dtokazaki.bounces.google.com dkim=pass dkdomain=google.com dmarc=pass fromdomain=google.com); spf=pass (google.com: domain of linux-kernel+bounces-153803-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-153803-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id D6D2528329D for ; Mon, 22 Apr 2024 17:43:49 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4CA0B153BF7; Mon, 22 Apr 2024 17:43:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="Gul4CsuP" Received: from mail-yb1-f202.google.com (mail-yb1-f202.google.com [209.85.219.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2AA7E153819 for ; Mon, 22 Apr 2024 17:43:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.202 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713807823; cv=none; b=HIh0AhBTHsHU2JZhacySPIr62Pv5yzhNEMWu2lesQ8MpqVZ1neVS22CIDTAnAgxqbjKCuR+ECKQGoDsKZg3nosvm7tFyGRRzdqlFIcDwmwTPR2LLm2VlNjW4fjUkdO8dha+VjRrK1r8ZSZxqZHyllGytuBy1p+Ts0Tpfh/kwuCU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713807823; c=relaxed/simple; bh=Q0xqpWxTXYdH3SX1/MqeJ3/kDT5iZSBWsXkiUBJBGp0=; h=Date:Mime-Version:Message-ID:Subject:From:To:Cc:Content-Type; b=N8OCCeERsH5wT9xpmNza2ohn8NiCtDMzAEqYyrix1sa5DXx+niLu9nW86b2HJxxC1+m9TAEgUbZugnAL+VzXj5VHvXgL4OMqh3IqQVu7SNB9bvtiR2q1uhhBTsAeraBI1klQ/ddwEIOlIf31cbeeEUSh3EFKNO7yfpV8LsvulKg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--dtokazaki.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=Gul4CsuP; arc=none smtp.client-ip=209.85.219.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--dtokazaki.bounces.google.com Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-dc691f1f83aso1840241276.1 for ; Mon, 22 Apr 2024 10:43:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1713807821; x=1714412621; darn=vger.kernel.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=T0VSzHwGHOz5OGuxpcZUIi3ZbES2QXe0izyLeD5/pVs=; b=Gul4CsuPq05ynGsJoc3tyTEqnqXT0b0BjIDtrL31THLjNwBRJYkD9Nn8FQd8M07W0K zRxuEQF7nvUXS1a+MfU4mNacxD7vLLHOfwAokr03IOrZ3fLkga1hLf5jQmrNmhamhTUb KwL2XdKlKOFx3iyIdQ+oTUeirW3AT06BdcDOAl+1XaA9IaMnkzssbLK5JQMAqusohk4c MI0vFw2sxtMzQpQdUs7fAx32YHlKK9dY9GRJ7XmmxPQY3rMyZPqAO/MeR34U9cjWXbXt ggghqCRhM5uZygq9eIzZ+yG83YHGlnYxsfcPMacxj+cVPJMpuzJyQnMyfxuWRGbDqfRN 4XmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713807821; x=1714412621; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=T0VSzHwGHOz5OGuxpcZUIi3ZbES2QXe0izyLeD5/pVs=; b=bi6hkyy+Q3KnBRSnUxlAgKaSzVFpbslm47/z9C/HFcPjM3iX4xb/sbtydiBUG6Uwkv lJHk3k8wRsUPmI+JeSsHGXoP6RL0yraDHiwl/6eXdoMkqxxmiKnZjz6Bu0aSqx+wc6W1 mufkY3YToqOKYiQJ4sf7Z5aAOEojgRJLEckQkkdvsLUJ2tkQ8klO8Mdlj1jcED/lvlQK glx5/+hS5Q6/gVBK2xsQ7sm/GqeMEKoUk2kKLj7ThDQsplCAoDwHnOt1K1CIObCiCJ1/ mUDx5BrNrLxIxX2+t0AWen0Euko0hqfUY9jDqPDXSKb6rR1NEQ9f79INoq89nUHTjoME sc5w== X-Forwarded-Encrypted: i=1; AJvYcCXqBEN/JjBTTm9tGSq8XsTfJsSbp0APp9Q+y7dnXgvmZo4Df+oXH7pJd9PGEPw2UnrOowCeaKejkraEAZOwEO+auVEt11ASy2HJPo2W X-Gm-Message-State: AOJu0YxsR0DNTvcw6XjoDtzZH+5ydm50LlKlDOabjlmK6vY5VPVE6bUJ ew2tXZYYw12c32dzmDg4fnIOKudX2y6/E+QeXfu4VAptQ/VAgSkxp1kEbp5EIhv2ZA6OAOete2L f2pnHLwEQ77ECHw== X-Received: from dtokazaki-pixel.c.googlers.com ([fda3:e722:ac3:cc00:20:ed76:c0a8:1a03]) (user=dtokazaki job=sendgmr) by 2002:a05:6902:1023:b0:dda:c4ec:7db5 with SMTP id x3-20020a056902102300b00ddac4ec7db5mr88799ybt.4.1713807821159; Mon, 22 Apr 2024 10:43:41 -0700 (PDT) Date: Mon, 22 Apr 2024 17:43:36 +0000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 X-Mailer: git-send-email 2.44.0.769.g3c40516874-goog Message-ID: <20240422174337.2487142-1-dtokazaki@google.com> Subject: [PATCH v3] eeprom: at24: fix memory corruption race condition From: Daniel Okazaki To: Bartosz Golaszewski , Arnd Bergmann , Greg Kroah-Hartman Cc: Daniel Okazaki , kernel-team@android.com, linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" If the eeprom is not accessible, an nvmem device will be registered, the read will fail, and the device will be torn down. If another driver accesses the nvmem device after the teardown, it will reference invalid memory. Move the failure point before registering the nvmem device. Signed-off-by: Daniel Okazaki Fixes: b20eb4c1f026 ("eeprom: at24: drop unnecessary label") --- Changed sha length to 12 in description --- drivers/misc/eeprom/at24.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c index 572333ead5fb..4bd4f32bcdab 100644 --- a/drivers/misc/eeprom/at24.c +++ b/drivers/misc/eeprom/at24.c @@ -758,15 +758,6 @@ static int at24_probe(struct i2c_client *client) } pm_runtime_enable(dev); - at24->nvmem = devm_nvmem_register(dev, &nvmem_config); - if (IS_ERR(at24->nvmem)) { - pm_runtime_disable(dev); - if (!pm_runtime_status_suspended(dev)) - regulator_disable(at24->vcc_reg); - return dev_err_probe(dev, PTR_ERR(at24->nvmem), - "failed to register nvmem\n"); - } - /* * Perform a one-byte test read to verify that the chip is functional, * unless powering on the device is to be avoided during probe (i.e. @@ -782,6 +773,15 @@ static int at24_probe(struct i2c_client *client) } } + at24->nvmem = devm_nvmem_register(dev, &nvmem_config); + if (IS_ERR(at24->nvmem)) { + pm_runtime_disable(dev); + if (!pm_runtime_status_suspended(dev)) + regulator_disable(at24->vcc_reg); + return dev_err_probe(dev, PTR_ERR(at24->nvmem), + "failed to register nvmem\n"); + } + /* If this a SPD EEPROM, probe for DDR3 thermal sensor */ if (cdata == &at24_data_spd) at24_probe_temp_sensor(client); -- 2.44.0.769.g3c40516874-goog