mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
Merge branch 'for-5.0/upstream-fixes' into for-linus
Document change towards group maintainership of livepatching code samples/ warning fix from Nicholas Mc Guire
This commit is contained in:
commit
67bae14adc
4 changed files with 13 additions and 12 deletions
|
@ -8820,10 +8820,10 @@ F: drivers/platform/x86/hp_accel.c
|
||||||
|
|
||||||
LIVE PATCHING
|
LIVE PATCHING
|
||||||
M: Josh Poimboeuf <jpoimboe@redhat.com>
|
M: Josh Poimboeuf <jpoimboe@redhat.com>
|
||||||
M: Jessica Yu <jeyu@kernel.org>
|
|
||||||
M: Jiri Kosina <jikos@kernel.org>
|
M: Jiri Kosina <jikos@kernel.org>
|
||||||
M: Miroslav Benes <mbenes@suse.cz>
|
M: Miroslav Benes <mbenes@suse.cz>
|
||||||
R: Petr Mladek <pmladek@suse.com>
|
M: Petr Mladek <pmladek@suse.com>
|
||||||
|
R: Joe Lawrence <joe.lawrence@redhat.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: kernel/livepatch/
|
F: kernel/livepatch/
|
||||||
F: include/linux/livepatch.h
|
F: include/linux/livepatch.h
|
||||||
|
@ -8834,7 +8834,7 @@ F: Documentation/ABI/testing/sysfs-kernel-livepatch
|
||||||
F: samples/livepatch/
|
F: samples/livepatch/
|
||||||
F: tools/testing/selftests/livepatch/
|
F: tools/testing/selftests/livepatch/
|
||||||
L: live-patching@vger.kernel.org
|
L: live-patching@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/livepatching/livepatching.git
|
||||||
|
|
||||||
LLC (802.2)
|
LLC (802.2)
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
|
|
@ -71,7 +71,7 @@ static int shadow_leak_ctor(void *obj, void *shadow_data, void *ctor_data)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct dummy *livepatch_fix1_dummy_alloc(void)
|
static struct dummy *livepatch_fix1_dummy_alloc(void)
|
||||||
{
|
{
|
||||||
struct dummy *d;
|
struct dummy *d;
|
||||||
void *leak;
|
void *leak;
|
||||||
|
@ -113,7 +113,7 @@ static void livepatch_fix1_dummy_leak_dtor(void *obj, void *shadow_data)
|
||||||
__func__, d, *shadow_leak);
|
__func__, d, *shadow_leak);
|
||||||
}
|
}
|
||||||
|
|
||||||
void livepatch_fix1_dummy_free(struct dummy *d)
|
static void livepatch_fix1_dummy_free(struct dummy *d)
|
||||||
{
|
{
|
||||||
void **shadow_leak;
|
void **shadow_leak;
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ struct dummy {
|
||||||
unsigned long jiffies_expire;
|
unsigned long jiffies_expire;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool livepatch_fix2_dummy_check(struct dummy *d, unsigned long jiffies)
|
static bool livepatch_fix2_dummy_check(struct dummy *d, unsigned long jiffies)
|
||||||
{
|
{
|
||||||
int *shadow_count;
|
int *shadow_count;
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ static void livepatch_fix2_dummy_leak_dtor(void *obj, void *shadow_data)
|
||||||
__func__, d, *shadow_leak);
|
__func__, d, *shadow_leak);
|
||||||
}
|
}
|
||||||
|
|
||||||
void livepatch_fix2_dummy_free(struct dummy *d)
|
static void livepatch_fix2_dummy_free(struct dummy *d)
|
||||||
{
|
{
|
||||||
void **shadow_leak;
|
void **shadow_leak;
|
||||||
int *shadow_count;
|
int *shadow_count;
|
||||||
|
|
|
@ -96,15 +96,15 @@ MODULE_DESCRIPTION("Buggy module for shadow variable demo");
|
||||||
* Keep a list of all the dummies so we can clean up any residual ones
|
* Keep a list of all the dummies so we can clean up any residual ones
|
||||||
* on module exit
|
* on module exit
|
||||||
*/
|
*/
|
||||||
LIST_HEAD(dummy_list);
|
static LIST_HEAD(dummy_list);
|
||||||
DEFINE_MUTEX(dummy_list_mutex);
|
static DEFINE_MUTEX(dummy_list_mutex);
|
||||||
|
|
||||||
struct dummy {
|
struct dummy {
|
||||||
struct list_head list;
|
struct list_head list;
|
||||||
unsigned long jiffies_expire;
|
unsigned long jiffies_expire;
|
||||||
};
|
};
|
||||||
|
|
||||||
noinline struct dummy *dummy_alloc(void)
|
static __used noinline struct dummy *dummy_alloc(void)
|
||||||
{
|
{
|
||||||
struct dummy *d;
|
struct dummy *d;
|
||||||
void *leak;
|
void *leak;
|
||||||
|
@ -129,7 +129,7 @@ noinline struct dummy *dummy_alloc(void)
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
noinline void dummy_free(struct dummy *d)
|
static __used noinline void dummy_free(struct dummy *d)
|
||||||
{
|
{
|
||||||
pr_info("%s: dummy @ %p, expired = %lx\n",
|
pr_info("%s: dummy @ %p, expired = %lx\n",
|
||||||
__func__, d, d->jiffies_expire);
|
__func__, d, d->jiffies_expire);
|
||||||
|
@ -137,7 +137,8 @@ noinline void dummy_free(struct dummy *d)
|
||||||
kfree(d);
|
kfree(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
noinline bool dummy_check(struct dummy *d, unsigned long jiffies)
|
static __used noinline bool dummy_check(struct dummy *d,
|
||||||
|
unsigned long jiffies)
|
||||||
{
|
{
|
||||||
return time_after(jiffies, d->jiffies_expire);
|
return time_after(jiffies, d->jiffies_expire);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue