Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp6011433imm; Mon, 23 Jul 2018 09:50:36 -0700 (PDT) X-Google-Smtp-Source: AAOMgpcSCQ6rVz7MSM6kwABPOuTjh6YnCstW8Eg6S5jcF4P4uGL6LGuKyP/r+k8VnTvtnAoa2sQK X-Received: by 2002:a63:7c5c:: with SMTP id l28-v6mr13162654pgn.352.1532364636274; Mon, 23 Jul 2018 09:50:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532364636; cv=none; d=google.com; s=arc-20160816; b=bPyjyfL9Q14fAzS3m5Mi72qbiDWYnLhZWKgcmcnz25oB365KqAyRIYb0Dz9zA3MpME Ayw1skDL/00+K+XwkHAoBEVhOt0PxlHiZSwSRt+IumAkds75tkcQl8GXeo29e4zFnIX0 VT21hXv9k4dcyErlStkXmN3W7bbUBlLHbcgLMCFYa9JvnYLd2IpS9HOUYVl/PU+5jpfz yRUHysbu6NpUGjZ0h3a9vuvpEcYLZs8ZwNjTMABYl2JtM35Ox4NGEISU1v7F7ateH9L8 knQ25JRLSfg8Gq740UnzKIv3/rNYFiTsuYJmll8tERmJM0MEiHAwZIFp3b3mPI78nAw6 1qCw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=nDQClibtnyxCjmHF6DaQiuiyl4jQEOk2XO63Sn4hLvc=; b=TETF2XelIelJMpT7PRfcvwNqqr9UyqfiQUW55f+G+KIocvFArZq9uLrnUngks6CK7g YpKaKNnOKbZeq/Qp01b37BBFupJC6Q83bDApvBF8nSv/L+9aSNWNFFBMgvdW29J1IhTO pkLPU2y1CZHqVhYOMF4uPVHCHznMFP5Md6hGEVItQnrEbihc7JDBodZi+MXgZZaLjKUS vdzcNRBQgJksF/qxkhyqwBD6rfgEQBo4K2yX+8PvAVkUb8Yxqmigc3Roj4iviOpPcFtX Udn6H+YKXeBDtebHlyjtzNwkLq265VDcOXqy9fqiIq/ThyejCeXElbkzH2lurdeMdN14 NlOg== ARC-Authentication-Results: i=1; mx.google.com; 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 n2-v6si8867372pge.74.2018.07.23.09.50.21; Mon, 23 Jul 2018 09:50:36 -0700 (PDT) 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; 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 S2388838AbeGWRva (ORCPT + 99 others); Mon, 23 Jul 2018 13:51:30 -0400 Received: from bran.ispras.ru ([83.149.199.196]:18376 "EHLO smtp.ispras.ru" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726943AbeGWRva (ORCPT ); Mon, 23 Jul 2018 13:51:30 -0400 Received: from myklebust.intra.ispras.ru (unknown [10.10.2.207]) by smtp.ispras.ru (Postfix) with ESMTP id 30D5A203C3; Mon, 23 Jul 2018 19:49:19 +0300 (MSK) From: Anton Vasilyev To: Greg Kroah-Hartman Cc: Anton Vasilyev , Dmitry Torokhov , Guenter Roeck , Samuel Holland , Pan Bian , linux-kernel@vger.kernel.org, ldv-project@linuxtesting.org Subject: [PATCH] firmware: vpd: Fix section enabled flag on vpd_section_destroy Date: Mon, 23 Jul 2018 19:48:57 +0300 Message-Id: <20180723164857.24460-1-vasilyev@ispras.ru> X-Mailer: git-send-email 2.18.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org static struct ro_vpd and rw_vpd are initialized by vpd_sections_init() in vpd_probe() based on header's ro and rw sizes. In vpd_remove() vpd_section_destroy() performs deinitialization based on enabled flag, which is set to true by vpd_sections_init(). This leads to call of vpd_section_destroy() on already destroyed section for probe-release-probe-release sequence if first probe performs ro_vpd initialization and second probe does not initialize it. The patch adds changing enabled flag on vpd_section_destroy. Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Anton Vasilyev --- drivers/firmware/google/vpd.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/firmware/google/vpd.c b/drivers/firmware/google/vpd.c index e9db895916c3..5347c17c7108 100644 --- a/drivers/firmware/google/vpd.c +++ b/drivers/firmware/google/vpd.c @@ -246,6 +246,7 @@ static int vpd_section_destroy(struct vpd_section *sec) sysfs_remove_bin_file(vpd_kobj, &sec->bin_attr); kfree(sec->raw_name); memunmap(sec->baseaddr); + sec->enabled = false; } return 0; -- 2.18.0