From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758526AbcH3MwH (ORCPT ); Tue, 30 Aug 2016 08:52:07 -0400 Received: from mail-oi0-f44.google.com ([209.85.218.44]:33435 "EHLO mail-oi0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758157AbcH3MwF (ORCPT ); Tue, 30 Aug 2016 08:52:05 -0400 Date: Tue, 30 Aug 2016 07:52:02 -0500 From: Christopher Arges To: Jiri Kosina Cc: Petr Mladek , live-patching@vger.kernel.org, Josh Poimboeuf , Jessica Yu , Miroslav Benes , linux-kernel@vger.kernel.org Subject: Re: [PATCH] livepatch: add load/unload hooks to objects Message-ID: <20160830125201.GA3974@gmail.com> References: <1472237448-22270-1-git-send-email-chris.j.arges@canonical.com> <1472237448-22270-2-git-send-email-chris.j.arges@canonical.com> <20160829152330.GN4866@pathway.suse.cz> <20160829161627.GA32390@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.6.0 (2016-04-01) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Aug 30, 2016 at 11:41:28AM +0200, Jiri Kosina wrote: > On Mon, 29 Aug 2016, Christopher Arges wrote: > > > Another example is CVE-2016-2117. Here we need to unset NETIF_F_SG on a > > particular device. If the device is already loaded we need a way to > > fixup hw_features on an already allocated network device. Again this > > could be done in the init code of the patch, but a nicer solution would > > be to do this on a load/unload hook appropriately. > > I am afraid this is more complicated than what you describe. You can't > just unset NETIF_F_SG and be done with it; look for example what might > happen if you clear the flag while skb_segment() is running and gcc is > refetching netdev_features_t (there is no READ_ONCE() for that). The same > holds for __ip6_append_data(). > I am not saying this can't be worked around, but it's way much more > complicated than just clearing a bit in a callback. > > -- > Jiri Kosina > SUSE Labs > Jiri, Yes this example was meant more for showing how something like a load/unload hook could make patching certain situations easier for a patch author. Essentially it would be nice to have a place to run code right before patching, without having to write an additional notifier for module load events. In this specific example, for safety of setting hw_features perhaps one could check if a set of functions are on the stacks of any tasks before executing these hooks. Or ignore any skbs that are already in flight. --chris