From mboxrd@z Thu Jan 1 00:00:00 1970 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=-10.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 69435C43464 for ; Fri, 18 Sep 2020 16:16:38 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E759520795 for ; Fri, 18 Sep 2020 16:16:37 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="rqnGDy/J" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E759520795 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=j+ksoVz3SGsbwaVjBiaBXWYNYJL2RHb0PaOOYg1hrF0=; b=rqnGDy/JFXMlfNfOYDnOg6R+e 0bMtTw5plVRk2WfaoijRuwQ8+NTJ9WCc1s/epNd89q9sdamjBcUMrW6C8UsXpui6HvOyr5geRH/G5 p2cGuE67gsTTtccRnBz6CP46gJVf7xSRVS4gz/YWBiO4C5/EfEDNm0mbj+MZYloOqo2uNLu8pZqYa 9Q7qiAJDh6HtrYYS9q4xiJtGSiuSCtlb+wz7j0aGKQtEgeot/iBmGXma4/7mbk11aSKFbTBgK1KOH 7CgQ2IsHDtbw8LzfXBghzmQqT7gao8fgyiFQDUipoy9RRbcXPaoI5FKTYSX1wUt6St5SJMReIiKLl Qx5CNNuDA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kJJ2N-0000kg-GD; Fri, 18 Sep 2020 16:15:03 +0000 Received: from foss.arm.com ([217.140.110.172]) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kJJ2G-0000ik-OM for linux-arm-kernel@lists.infradead.org; Fri, 18 Sep 2020 16:14:57 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 6686830E; Fri, 18 Sep 2020 09:14:55 -0700 (PDT) Received: from [172.16.1.113] (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 570E93F73B; Fri, 18 Sep 2020 09:14:54 -0700 (PDT) Subject: Re: [PATCH v4 12/15] drivers/firmware/sdei: Remove _sdei_event_register() To: Gavin Shan , linux-arm-kernel@lists.infradead.org References: <20200730014531.310465-1-gshan@redhat.com> <20200730014531.310465-13-gshan@redhat.com> From: James Morse Message-ID: Date: Fri, 18 Sep 2020 17:14:43 +0100 User-Agent: Mozilla/5.0 (X11; Linux aarch64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: <20200730014531.310465-13-gshan@redhat.com> Content-Language: en-GB X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200918_121456_839267_972DD324 X-CRM114-Status: GOOD ( 20.17 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, catalin.marinas@arm.com, will@kernel.org, shan.gavin@gmail.com, Jonathan.Cameron@huawei.com Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Gavin, On 30/07/2020 02:45, Gavin Shan wrote: > The function _sdei_event_register() is called by sdei_event_register() > and sdei_device_thaw() as the following functional call chain shows. > _sdei_event_register() covers the shared and private events, but > sdei_device_thaw() only covers the shared events. So the logic to > cover the private events in _sdei_event_register() isn't needed by > sdei_device_thaw(). > > Similarly, sdei_reregister_event_llocked() covers the shared and > private events in the regard of reenablement. The logic to cover > the private events isn't needed by sdei_device_thaw() either. These were added for code-reuse instead of duplication, but from the diff-stat it looks like it cut-in too high up and would have been simpler not to. (I remember cpuhp being a nightmare) > sdei_event_register sdei_device_thaw > _sdei_event_register sdei_reregister_shared > sdei_reregister_event_llocked > _sdei_event_register > > This removes _sdei_event_register() and sdei_reregister_event_llocked(). > Their logic is moved to sdei_event_register() and sdei_reregister_shared(). > This shouldn't cause any logicial changes. (logical) > drivers/firmware/arm_sdei.c | 77 ++++++++++++++----------------------- > 1 file changed, 28 insertions(+), 49 deletions(-) > static int sdei_reregister_shared(void) > { > int err = 0; > @@ -674,9 +638,24 @@ static int sdei_reregister_shared(void) > continue; > > if (event->reregister) { > - err = sdei_reregister_event_llocked(event); > - if (err) > + err = sdei_api_event_register(event->event_num, > + sdei_entry_point, event->registered, > + SDEI_EVENT_REGISTER_RM_ANY, 0); > + if (err) { > + sdei_event_destroy_llocked(event); > + pr_err("Failed to re-register event %u\n", > + event->event_num); sdei_event_destroy_llocked() just free()'d event. You need to print the error first. > break; > + } > + } > + > + if (event->reenable) { > + err = sdei_api_event_enable(event->event_num); > + if (err) { > + pr_err("Failed to re-enable event %u\n", > + event->event_num); > + break; > + } > } > } > spin_unlock(&sdei_list_lock); With the use-after-free fixed: Reviewed-by: James Morse Thanks, James _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel