diff options
author | Nicholas Mc Guire <hofrat@osadl.org> | 2019-01-24 04:48:16 +0300 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2019-01-25 18:43:35 +0300 |
commit | b73d5dc72272c0012999f939476b703d269d21b6 (patch) | |
tree | f7badad5904aa7d595e47f036433dc81c8f4ac7c /samples/livepatch/livepatch-shadow-mod.c | |
parent | a6c34247af70053219fcfa711bfc5e0d0d954daf (diff) | |
download | linux-b73d5dc72272c0012999f939476b703d269d21b6.tar.xz |
livepatch: samples: non static warnings fix
Sparse reported warnings about non-static symbols. For the variables
a simple static attribute is fine - for the functions referenced by
livepatch via klp_func the symbol-names must be unmodified in the
symbol table and the patchable code has to be emitted. The resolution
is to attach __used attribute to the shared statically declared functions.
Link: https://lore.kernel.org/lkml/1544965657-26804-1-git-send-email-hofrat@osadl.org/
Suggested-by: Joe Lawrence <joe.lawrence@redhat.com>
Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
Acked-by: Miroslav Benes <mbenes@suse.cz>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'samples/livepatch/livepatch-shadow-mod.c')
-rw-r--r-- | samples/livepatch/livepatch-shadow-mod.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/samples/livepatch/livepatch-shadow-mod.c b/samples/livepatch/livepatch-shadow-mod.c index 4aa8a88d3cd6..4d79c6dc055b 100644 --- a/samples/livepatch/livepatch-shadow-mod.c +++ b/samples/livepatch/livepatch-shadow-mod.c @@ -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 * on module exit */ -LIST_HEAD(dummy_list); -DEFINE_MUTEX(dummy_list_mutex); +static LIST_HEAD(dummy_list); +static DEFINE_MUTEX(dummy_list_mutex); struct dummy { struct list_head list; unsigned long jiffies_expire; }; -noinline struct dummy *dummy_alloc(void) +static __used noinline struct dummy *dummy_alloc(void) { struct dummy *d; void *leak; @@ -129,7 +129,7 @@ noinline struct dummy *dummy_alloc(void) 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", __func__, d, d->jiffies_expire); @@ -137,7 +137,8 @@ noinline void dummy_free(struct dummy *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); } |