Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp9147395ybl; Fri, 17 Jan 2020 07:06:34 -0800 (PST) X-Google-Smtp-Source: APXvYqxZHvp10aUFBdcna/iputHs4mMHPfM0MLPgaoRIaoNpOZh7Hb1hsUJb2CPiLEYGk2VcY5Xl X-Received: by 2002:aca:72cd:: with SMTP id p196mr3503543oic.99.1579273594491; Fri, 17 Jan 2020 07:06:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579273594; cv=none; d=google.com; s=arc-20160816; b=mRGfEPa849qba90RAMiC2eqweSSIUch2ln00W2BotGtJ0s6jnoSlru2uicHzePW6ln DtIut/M/O1IVD5TTzgw3+UzGSiAmwBRPt//nBWQcUzksQOLVo5CQvHm3Y3BdO6JYf2Bu 0GDri57xyzrWxAUmztbgq7tIxCgh7iSecJaJEF4cgQUyTbd76ifR15LurdnXy2ajTMw2 KYBBmXrobY9B4pPidAZU3OmGcJu3v/m5MZF6A9Tj0DQJSxzcrcXQdqpYaPNrQVYCSGCW Pktfr5S7pCf6Jg2dYZ22AsaW6GpvrxgLXP6n74W7TWDszYsJFvAQZ8GqhoCPxle/qZa8 Vl9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=xPuJc9D/KNYBzNHN1N2h0UcVQ+Li/RqAZiR4B1/68KU=; b=kLuINnqAJIYF7oN27nqBubzRB5Vrln3o5HLqvJqJtF6XOpM7SByi54VS8gcjFrSw5U D5Q0IfzlEuxW3q4YgOtypPD54DGoVhSiJ1+CmTMDV7TosdKGi6HhIC+ra8Rt3h+ZQiAi B4iJtWSUHcCFCsO2D6ZL4zkXLItUtke2oZ/zC477yVjEB2SxWzKr+P84QSnFwDnc/2pp WQ7QMCOYMUUyiGWUGDcuqzFSRWmpE9n9FYQi+BWGyJ4A45f/m0SYj8O7KvX/pxJLoLIV Zk1MB70u68UKb6bHflp6JOIJ8pYNo5CJs2FP4Pr0r4Otjoz3v+dle+MulPVUsQi8riPq vq6A== 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 d8si15722772oti.306.2020.01.17.07.06.22; Fri, 17 Jan 2020 07:06:34 -0800 (PST) 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 S1729355AbgAQPEd (ORCPT + 99 others); Fri, 17 Jan 2020 10:04:33 -0500 Received: from mx2.suse.de ([195.135.220.15]:46284 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729146AbgAQPEC (ORCPT ); Fri, 17 Jan 2020 10:04:02 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 31657BBB3; Fri, 17 Jan 2020 15:04:01 +0000 (UTC) From: Petr Mladek To: Jiri Kosina , Josh Poimboeuf , Miroslav Benes Cc: Joe Lawrence , Kamalesh Babulal , Nicolai Stange , live-patching@vger.kernel.org, linux-kernel@vger.kernel.org, Petr Mladek Subject: [POC 16/23] livepatch: Add patch into the global list early Date: Fri, 17 Jan 2020 16:03:16 +0100 Message-Id: <20200117150323.21801-17-pmladek@suse.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20200117150323.21801-1-pmladek@suse.com> References: <20200117150323.21801-1-pmladek@suse.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The objects for livepatched modules need to be loaded before the livepatch gets enabled. klp_add_module() has to find the patch. The code is easier when the being-enabled patch can be found in the global list. Fortunately, there is no problem to add patch into the list already in the early init. klp_free_patch_start() will remove it in case of any later error. Signed-off-by: Petr Mladek --- kernel/livepatch/core.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c index 688ad81def14..06676ec63ba7 100644 --- a/kernel/livepatch/core.c +++ b/kernel/livepatch/core.c @@ -852,6 +852,7 @@ static int klp_init_object_early(struct klp_patch *patch, static int klp_init_patch_early(struct klp_patch *patch) { struct klp_object *obj = patch->obj; + int ret; /* Main patch module is always for vmlinux */ if (obj->name) @@ -865,7 +866,11 @@ static int klp_init_patch_early(struct klp_patch *patch) INIT_WORK(&patch->free_work, klp_free_patch_work_fn); init_completion(&patch->finish); - return klp_init_object_early(patch, obj); + ret = klp_init_object_early(patch, obj); + if (!ret) + list_add_tail(&patch->list, &klp_patches); + + return ret; } static int klp_init_patch(struct klp_patch *patch) @@ -889,8 +894,6 @@ static int klp_init_patch(struct klp_patch *patch) return ret; } - list_add_tail(&patch->list, &klp_patches); - return 0; } -- 2.16.4