Received: by 2002:ab2:6203:0:b0:1f5:f2ab:c469 with SMTP id o3csp849311lqt; Fri, 19 Apr 2024 12:13:21 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCV56pYeaMx4AoZdek9Pbq6ZhrXBLOOn/HZRasNiWEUQwjdMJvI4S9qh9HSz9i+RRS8bdv2YySZnns7bZ9FKbhoIpaB4wdOzkBdflwsJhQ== X-Google-Smtp-Source: AGHT+IG4enxsRc+xlHpiCRvv4wELo7KLOswp8UuWbQ7uUspFTimUsHW7W3vud0DoLGdtiQswjfOe X-Received: by 2002:a17:903:230c:b0:1e2:6b5d:5b18 with SMTP id d12-20020a170903230c00b001e26b5d5b18mr3706984plh.51.1713554001661; Fri, 19 Apr 2024 12:13:21 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1713554001; cv=pass; d=google.com; s=arc-20160816; b=lPcFfYt5PU6PJUdEtlNjSavrQGMpvAgvEjSy4SLggVza5QqpfH7RBIlHcg9XiGUesE HJ3HHUsaS8bT+rKxDmSwRC9yljwkGWS5/y7pRdeUv7Z6sqTVNblvpODVtLrZlqDOVxlK wz1ry2+PACTFxccGuKH0Wk6yVa1sxGVj1vMj5llS63eAMXnlP3b6a4yrYpkR6r1bnqH4 xwsP5Nb8W4a37Vu6EmMdIiy6Y53EjP0ImMDwlHkVUG0tZpmZvTKVYMfILDx9mX0At9z+ +Z3OWe0VHmZDgALXiRh/xvqpuirzqLtPuXDIYwjrekQQZ4kYkoChYCk4FOygrJxRuIZn X4dw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:message-id:references:mime-version :list-unsubscribe:list-subscribe:list-id:precedence:in-reply-to:date :dkim-signature; bh=S3nn0uxGKg2XiHfenj6FC27XZwwqUuZAKVQOuRIbTsY=; fh=E6G4IlEPjIC+8+Dute/GnDZHIY70onvBs4RCj+PZjig=; b=rfN+5UKVRzfY7y8oSSe0T7KaZIcuwdDaH/rfzBytK3ekZXwl3KrxgGlnT4hH4+yHzc uHB77H/n+b7dRdZNmRZk5X/IcSYk+iHSwH8kj8S7Zjzp8p8bYs7APudWQfeDD+jWAodJ Wg3lbZ5U2qXGmH7XBihvryRJl0ejOrk4somFEloIa+VsYeNbii+FCT+mk8aa5+2a8WFF p8OfSRAnysZBBh7npy+D9gAUazC4uKnehPEJ5FDrtVbGoWdjvw8K8Zx+OYz5SLXw5XaE 23khYJBL7kVguyCCN2nWMsjf8qgqaGAA4qr1jhqO40XSPwGqWuitD8U2mks9JaHlM1q7 NR4w==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=WsY9X5WO; 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-151895-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-151895-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [2604:1380:40f1:3f00::1]) by mx.google.com with ESMTPS id k64-20020a636f43000000b005d692a181d9si3644671pgc.340.2024.04.19.12.13.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 19 Apr 2024 12:13:21 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-151895-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) client-ip=2604:1380:40f1:3f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=WsY9X5WO; 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-151895-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-151895-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 sy.mirrors.kernel.org (Postfix) with ESMTPS id B25E2B22D8D for ; Fri, 19 Apr 2024 19:12:25 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 806EF13C825; Fri, 19 Apr 2024 19:12:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="WsY9X5WO" Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.201]) (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 64D8D13C3F9 for ; Fri, 19 Apr 2024 19:12:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713553936; cv=none; b=VLMcUrxnMpHjOm82crpZ3Asjbe6zJPweTjY6Ejq91stb133dP03Gyha6GYgk0hWxc3XbckUDWiS5oB3PqLdZetnTPOcDZ9FguIQnpZfpJQ0Vnq9ZseeF9gAzE2K0iJ3tqrdHoS0ahfZp+ao7B1FPdk+N+4wNrUOu0QNDm4Jf40g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713553936; c=relaxed/simple; bh=0BdrZ3xw4Yg9KU1Jb5k96XvpBhEfUhYdRlzZJRoScYQ=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=JQUI1iiYtJbY0msReTh04L8/68ddQNaQsVtsYP+mQGNYjmzH4K/DjXa3pkxIaWIlaJJB7n/tnQMqfOtwelhNrtf8iN7MihUg6Nw91FNDO59WaTUFzk7Vx6Um4MfYZsPsBHCy0lLmvmDKUS/I4H3ibZObpXEVpSjqhRCAdneIMSo= 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=WsY9X5WO; arc=none smtp.client-ip=209.85.219.201 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-f201.google.com with SMTP id 3f1490d57ef6-dc64f63d768so4430889276.2 for ; Fri, 19 Apr 2024 12:12:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1713553934; x=1714158734; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=S3nn0uxGKg2XiHfenj6FC27XZwwqUuZAKVQOuRIbTsY=; b=WsY9X5WOjLsKbNtGBbCKP9yo4UEXSzOcch7/yA1JuSXzZ50JjOp5SNiYemXfkMnh6F DDswJTf2fSYip6jwACsHWBTGvcoKF+tXhJO7Kyq2Yppszz6u0Igtnd3X/jeha4wQVLBU xRrWmJLPQyBdXV5cE+dh8qBnLmijS+5cz2UNIlnt6T3IAoCL5rBPLIg2+ZmoWJc65Mkq aRMTysgzXp9wtTbRITVhsPG3WRZbe+uQ/m0dr/s+Ig45qRJ0LxXOOBDkvqwKxn/bLonT ztFJizr50/GwkYP1B9OMkHqAEz6mGDl5QLSkKLcQ/Htn5z/zQXcrEjLjrKepuRO+WzWJ EaZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713553934; x=1714158734; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=S3nn0uxGKg2XiHfenj6FC27XZwwqUuZAKVQOuRIbTsY=; b=WaNG+nUDBReD3h2p9/iIE13wQsY38xB1plleBfZpoLI4mNrzqaeD0J1aA3HCZqh80a mG+zKMCNeN8czDgZtZ1aJrAzvXJ0pSSaxQmNcALcEelfFr8N0ccAJ9QZ90MwjnF91cbk ViJgvxwzaLJ5JqsbOvBlUJ4V3ExukLJU9e/x0bztcA95ImSTJwP3BnI6zhedwfbm+IXk 6hd/+vQReuQlVfo5F+wf9riVNDDUte6oKbtJ6iaZFU+Kw3+EZm55ViibXUwdTHkcTCTd 6MUHNrXZ7kv4t7mEI22S17kS8743SRcoFR0JvX+QbOhdT22RsFZhNPGR0eciDitEy9Em /14Q== X-Forwarded-Encrypted: i=1; AJvYcCXy8vOETwN7Um9YdAIvNUQ021r9kdOW+PAwY0X4vA1kYzj//24iS5rJ+M2pe+3lZ92vkYGL6QQep4jM6a/hEyTWCPGTljN4rfBaNWD1 X-Gm-Message-State: AOJu0YyanNIx2BU/Rty46mVIXx9yr+0o+/auYHDfDD0GB8a6H3g9K1PQ LzbIbFqqhJFxCn8tJ5Xa0YqxPdP5uDhF4lqtY7AEbNlyC4OlEkMdFdQjk0dCUvb7qifwV5HTLYG LqkrpLDLXQv6joQ== X-Received: from dtokazaki-pixel.c.googlers.com ([fda3:e722:ac3:cc00:20:ed76:c0a8:1a03]) (user=dtokazaki job=sendgmr) by 2002:a05:6902:709:b0:dcc:c57c:8873 with SMTP id k9-20020a056902070900b00dccc57c8873mr895580ybt.9.1713553934410; Fri, 19 Apr 2024 12:12:14 -0700 (PDT) Date: Fri, 19 Apr 2024 19:12:00 +0000 In-Reply-To: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: X-Mailer: git-send-email 2.44.0.769.g3c40516874-goog Message-ID: <20240419191200.219548-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") --- 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