Received: by 10.213.65.68 with SMTP id h4csp3749462imn; Tue, 10 Apr 2018 04:13:03 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/2aBaWSXJXq98c/QIm9glLwshAUg/5Mi0XACJUGiuFI/sunrYtO51YP4xoKqiRZF4bZySi X-Received: by 10.98.254.17 with SMTP id z17mr673697pfh.105.1523358783062; Tue, 10 Apr 2018 04:13:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523358783; cv=none; d=google.com; s=arc-20160816; b=oRhNW1FhkSHS4NBNG70c9u3tN4ePOo0sLyyecqPNjSVRpT+D3TWWtOorTiBJE9eqKi JZr/Rodj2uidqt3zgyAT20hdB8HOPYC7yfE0f3//5BHkKJjMMw6s73t0EyyyldPgoEXp SYGCsA15OoFtZ+I/n0GPdSVcTYJHGkb4royd6jfCOouk2gpCwAWROEMAbPdK4rZsj6ax nYshPDm6Eay96w/yFTX2/vgg4rvNN3H3D3YgfzRMBHACRs57f1IcOWQBa+M6sdP0UzQX HJy1jdl/ce3UUe8xhDOzcomKONzOvmDDWaiS/SLvNmAFbk1MDNh8JTVo+10osgq+Breh 8WQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=v7LHFdQ+HdiGEICS6unCnH9uU0BFUPg+2xxGiC28tZQ=; b=svkPwGNzhbHayKTcy2SlYqwUTm2NDiLCRE4D0MbZdAjYTRgwTwsUka3aT+zz+73Gyx MHkArnJJ8zhS8yUTsUjO5D7+judkNb6oYVf6j2bRrA4y9YR53enX6c5y8h6oqocTqp7j 8LN5GhjJ+hGk4az7hM9cNtYy3NeDMz50TnTQ1tRFpGZYlh+iIBb2Hh9cVWeEhZaK2BND 2ivC+pODRTBRUU3ZJ3qvYXEcV+tmygL7Rgxc++F2nxq1BtQ0lecaa8xBZhc8JRft+lZ3 Fzwz9xYJPPpnB8SuSPYSipfpq2zrawPcjtHLrgOAroqMSe7uD2VrA4QwBVljDvN0Zeyz iI1Q== 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 r4si1654002pgt.7.2018.04.10.04.12.25; Tue, 10 Apr 2018 04:13:03 -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 S1752460AbeDJLJ0 (ORCPT + 99 others); Tue, 10 Apr 2018 07:09:26 -0400 Received: from mx2.suse.de ([195.135.220.15]:60645 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751367AbeDJLJZ (ORCPT ); Tue, 10 Apr 2018 07:09:25 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 35BEEAF63; Tue, 10 Apr 2018 11:09:23 +0000 (UTC) Date: Tue, 10 Apr 2018 13:09:22 +0200 From: Petr Mladek To: Miroslav Benes Cc: Jiri Kosina , Josh Poimboeuf , Jason Baron , Joe Lawrence , Jessica Yu , Evgenii Shatokhin , live-patching@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 6/8] livepatch: Remove Nop structures when unused Message-ID: <20180410110922.vg3fsgnsdfe6wu34@pathway.suse.cz> References: <20180323120028.31451-1-pmladek@suse.com> <20180323120028.31451-7-pmladek@suse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20170421 (1.8.2) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue 2018-04-10 11:14:21, Miroslav Benes wrote: > On Fri, 23 Mar 2018, Petr Mladek wrote: > > This patch allows to unpatch and free the dynamic structures independently > > when the transition finishes. > > > > The free part is a bit tricky because kobject free callbacks are called > > asynchronously. We could not wait for them easily. Fortunately, we do > > not have to. Any further access can be avoided by removing them from > > the dynamic lists. > > > > Finally, the patch become the first on the stack when enabled. The replace > > functionality will not longer be needed. Let's clear patch->replace to > > avoid the special handling when it is eventually disabled/enabled again. > > > > diff --git a/include/linux/livepatch.h b/include/linux/livepatch.h > > index d6e6d8176995..1635b30bb1ec 100644 > > --- a/include/linux/livepatch.h > > +++ b/include/linux/livepatch.h > > @@ -172,6 +172,9 @@ struct klp_patch { > > #define klp_for_each_object_static(patch, obj) \ > > for (obj = patch->objs; obj->funcs || obj->name; obj++) > > > > +#define klp_for_each_object_safe(patch, obj, tmp_obj) \ > > + list_for_each_entry_safe(obj, tmp_obj, &patch->obj_list, node) > > + > > #define klp_for_each_object(patch, obj) \ > > list_for_each_entry(obj, &patch->obj_list, node) > > > > @@ -180,6 +183,9 @@ struct klp_patch { > > func->old_name || func->new_func || func->old_sympos; \ > > func++) > > > > +#define klp_for_each_func_safe(obj, func, tmp_func) \ > > + list_for_each_entry_safe(func, tmp_func, &obj->func_list, node) > > + > > #define klp_for_each_func(obj, func) \ > > list_for_each_entry(func, &obj->func_list, node) > > Is there a benefit of the newly added iterators? You are right that there is nothing special and it is used on a single place only. Well, it increases the chance that you will catch it when looking for the iterators. Also it makes it easier to see the difference against the non-safe iterators. I'll keep it if you are not strongly against it. Best Regards, Petr