From patchwork Tue May 11 18:50:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 12251873 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4F473C43600 for ; Tue, 11 May 2021 18:52:02 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id E3C5061185 for ; Tue, 11 May 2021 18:52:01 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E3C5061185 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 240106B0099; Tue, 11 May 2021 14:51:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1C96A6B009A; Tue, 11 May 2021 14:51:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F12AF6B009B; Tue, 11 May 2021 14:51:51 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0041.hostedemail.com [216.40.44.41]) by kanga.kvack.org (Postfix) with ESMTP id CC3066B0099 for ; Tue, 11 May 2021 14:51:51 -0400 (EDT) Received: from smtpin28.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 8602A180275CC for ; Tue, 11 May 2021 18:51:51 +0000 (UTC) X-FDA: 78129844422.28.E107B9F Received: from mail-io1-f51.google.com (mail-io1-f51.google.com [209.85.166.51]) by imf22.hostedemail.com (Postfix) with ESMTP id 39169C0001EA for ; Tue, 11 May 2021 18:51:43 +0000 (UTC) Received: by mail-io1-f51.google.com with SMTP id a11so19174175ioo.0 for ; Tue, 11 May 2021 11:51:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=v/Ph7k82kiUENJBSQiDSR8itgIh5RXyi6b0YkXaL6Qw=; b=BdHqxobx3i0b8GFby3ylXvLvy5TPzMJHaZElk+Rric9BlIXo/eZoPETSI69DwIDOyb qMzvAlAQ8IQa75MMu3o6phnrh7J2iWj41hr2aTQfhoINsY8bDgSE67fn1w6eLeDz9rPV r4MihMi0N1wvc3cA3R9iAhw/YoTaDHZvzPJ+qtskdkSjfmwligZc/T3ybGAh8DXo50eE IcbrW1wVbCkW/w+kwGKPxbT5ZTSj5fWm+ZkdPAz0coqBZ5KjCIOogdrIzucq+KytsPDB QftccG/y/a3Fkw68Yg+8cIPxLCRpXVBoGtypkty4GZIe4A2zbB2BXt3UtVJn8pwM5EKK fAyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=v/Ph7k82kiUENJBSQiDSR8itgIh5RXyi6b0YkXaL6Qw=; b=BSEb7mAtrbJdzj3CXuskp29zgI/i9I2Xxyp8bMc5z4xo3yqETeWBQX0KPvGnDbGd4a XfXKcoQ0TXhru2O68EKAN+Pbq+czIrU6/KXUwCibtOFS/1L4JF6k1DRg8iZGYmJu9DGk 9Q6KfxLZ0X4hiJZDc36ynykmkw+/u+pAakfJApjULPS1x4n3WL0Crktfw9Ahih1dASM8 x55D3yAGKK/VgsJXkmP9nYn5eCFuJlOJOzlRmDzzJUYrKZ8Jn0gCSQ54vE3kjiA007Jg 02Y6AvHI8+4ZIhAo4gfUXaYy2MogqIXDIySyL1paiH+rGMPothSvK8xMjo9+a5YE6+6Y IXew== X-Gm-Message-State: AOAM531ngxFEPhgmUE4ExEwrjI98IowkBzutosOwsNrjdUnyUL7Ee7cj EsAw5bagk/9CgZc3U+erTw1opG6KiR0ok2o4 X-Google-Smtp-Source: ABdhPJw9zXD4acEMCHtf8ziT4UiNL1akEatl5yiLTN/4mh7ecijp7Sy9AyKLLwHBM60t5xCoa+5XEA== X-Received: by 2002:a6b:d10c:: with SMTP id l12mr23361714iob.179.1620759110663; Tue, 11 May 2021 11:51:50 -0700 (PDT) Received: from frodo.mearth (c-24-9-77-57.hsd1.co.comcast.net. [24.9.77.57]) by smtp.googlemail.com with ESMTPSA id t10sm405096ils.36.2021.05.11.11.51.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 May 2021 11:51:50 -0700 (PDT) From: Jim Cromie To: Jason Baron , linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, Jim Cromie Subject: [RFC PATCH v5 22/28] dyndbg: fix NULL deref after deleting sites Date: Tue, 11 May 2021 12:50:51 -0600 Message-Id: <20210511185057.3815777-23-jim.cromie@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210511185057.3815777-1-jim.cromie@gmail.com> References: <20210511185057.3815777-1-jim.cromie@gmail.com> MIME-Version: 1.0 Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20161025 header.b=BdHqxobx; spf=pass (imf22.hostedemail.com: domain of jimcromie@gmail.com designates 209.85.166.51 as permitted sender) smtp.mailfrom=jimcromie@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 39169C0001EA X-Stat-Signature: zrmftsa9zuena6u73k5red7s6ozwb1as Received-SPF: none (gmail.com>: No applicable sender policy available) receiver=imf22; identity=mailfrom; envelope-from=""; helo=mail-io1-f51.google.com; client-ip=209.85.166.51 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1620759103-167628 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: After `echo module main +D > control` zeros the site pointer for main's callsites, `cat control` causes a NULL deref in ddebug_site_get(). Fix this with: - in vpr_infos, avoid dp->site->module, use dh->sites[dp->_index] - qualify WARN_ONs that test against dp->site. Also return dp->site, which may be null. This restores the abbreviated control output of deleted sites, rather than pretending it wasnt deleted. Deleting sites isn't an important feature, and its current form will be obsolete when the site pointer gets dropped. Its also pointless if the site data is in compressed blocks. But its still worthwhile to maintain !site robustness for a bit. Signed-off-by: Jim Cromie --- lib/dynamic_debug.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index af9791258f8f..d0477450ec0c 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -154,8 +154,8 @@ static struct _ddebug_site *ddebug_site_get(struct _ddebug *dp) if (dp >= __start___dyndbg && dp < __stop___dyndbg) { - v5pr_info("get: %s is builtin: %d %d %s:%s:%d\n", - dp->site->modname, dp->_index, (int)(dp - dh), + v5pr_info("get: %s is builtin: %d %s:%s:%d\n", + dh->site[dp->_index].modname, dp->_index, dh->site[dp->_index].filename, dh->site[dp->_index].function, dp->lineno); @@ -165,15 +165,16 @@ static struct _ddebug_site *ddebug_site_get(struct _ddebug *dp) dp->_index == (dp - __start___dyndbg) && dp->_index == (&__start___dyndbg_sites[dp->_index] - &__start___dyndbg_sites[0]))); - - WARN_ON(&__start___dyndbg_sites[dp->_index] != dp->site); + if (dp->site) + WARN_ON(&__start___dyndbg_sites[dp->_index] != dp->site); } else { v4pr_info("get: %s is loaded: %d %s:%s:%d\n", - dp->site->modname, dp->_index, + dh->site[dp->_index].modname, dp->_index, dh->site[dp->_index].filename, dh->site[dp->_index].function, dp->lineno); } - WARN_ON(&dh->site[dp->_index] != dp->site); + if (dp->site) + WARN_ON(&dh->site[dp->_index] != dp->site); return dp->site; }