| From: Clark Williams <williams@redhat.com> |
| Date: Tue, 3 Jul 2018 13:34:30 -0500 |
| Subject: [PATCH] fscache: initialize cookie hash table raw spinlocks |
| |
| The fscache cookie mechanism uses a hash table of hlist_bl_head structures. The |
| PREEMPT_RT patcheset adds a raw spinlock to this structure and so on PREEMPT_RT |
| the structures get used uninitialized, causing warnings about bad magic numbers |
| when spinlock debugging is turned on. |
| |
| Use the init function for fscache cookies. |
| |
| Signed-off-by: Clark Williams <williams@redhat.com> |
| Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| --- |
| fs/fscache/cookie.c | 8 ++++++++ |
| fs/fscache/main.c | 1 + |
| include/linux/fscache.h | 1 + |
| 3 files changed, 10 insertions(+) |
| |
| --- a/fs/fscache/cookie.c |
| +++ b/fs/fscache/cookie.c |
| @@ -958,3 +958,11 @@ int __fscache_check_consistency(struct f |
| return -ESTALE; |
| } |
| EXPORT_SYMBOL(__fscache_check_consistency); |
| + |
| +void __init fscache_cookie_init(void) |
| +{ |
| + int i; |
| + |
| + for (i = 0; i < (1 << fscache_cookie_hash_shift) - 1; i++) |
| + INIT_HLIST_BL_HEAD(&fscache_cookie_hash[i]); |
| +} |
| --- a/fs/fscache/main.c |
| +++ b/fs/fscache/main.c |
| @@ -145,6 +145,7 @@ static int __init fscache_init(void) |
| ret = -ENOMEM; |
| goto error_cookie_jar; |
| } |
| + fscache_cookie_init(); |
| |
| fscache_root = kobject_create_and_add("fscache", kernel_kobj); |
| if (!fscache_root) |
| --- a/include/linux/fscache.h |
| +++ b/include/linux/fscache.h |
| @@ -226,6 +226,7 @@ extern void __fscache_readpages_cancel(s |
| extern void __fscache_disable_cookie(struct fscache_cookie *, const void *, bool); |
| extern void __fscache_enable_cookie(struct fscache_cookie *, const void *, loff_t, |
| bool (*)(void *), void *); |
| +extern void fscache_cookie_init(void); |
| |
| /** |
| * fscache_register_netfs - Register a filesystem as desiring caching services |