fault-inject: improve build for CONFIG_FAULT_INJECTION=n

The fault-inject.h users across the kernel need to add a lot of #ifdef
CONFIG_FAULT_INJECTION to cater for shortcomings in the header.  Make
fault-inject.h self-contained for CONFIG_FAULT_INJECTION=n, and add stubs
for DECLARE_FAULT_ATTR(), setup_fault_attr(), should_fail_ex(), and
should_fail() to allow removal of conditional compilation.

[akpm@linux-foundation.org: repair fallout from no longer including debugfs.h into fault-inject.h]
[akpm@linux-foundation.org: fix drivers/misc/xilinx_tmr_inject.c]
[akpm@linux-foundation.org: Add debugfs.h inclusion to more files, per Stephen]
Link: https://lkml.kernel.org/r/20240813121237.2382534-1-jani.nikula@intel.com
Fixes: 6ff1cb355e ("[PATCH] fault-injection capabilities infrastructure")
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Cc: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Abhinav Kumar <quic_abhinavk@quicinc.com>
Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Rob Clark <robdclark@gmail.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Jani Nikula 2024-08-13 15:12:35 +03:00 committed by Andrew Morton
parent a15bec6a8f
commit 6ce2082fd3
12 changed files with 40 additions and 7 deletions

View File

@ -7,6 +7,7 @@
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/fault-inject.h> #include <linux/fault-inject.h>
#include <linux/debugfs.h>
#include <linux/of_address.h> #include <linux/of_address.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>

View File

@ -7,6 +7,7 @@
#include <linux/iommu.h> #include <linux/iommu.h>
#include <linux/xarray.h> #include <linux/xarray.h>
#include <linux/file.h> #include <linux/file.h>
#include <linux/debugfs.h>
#include <linux/anon_inodes.h> #include <linux/anon_inodes.h>
#include <linux/fault-inject.h> #include <linux/fault-inject.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>

View File

@ -12,6 +12,7 @@
#include <asm/xilinx_mb_manager.h> #include <asm/xilinx_mb_manager.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/of.h> #include <linux/of.h>
#include <linux/debugfs.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/fault-inject.h> #include <linux/fault-inject.h>

View File

@ -6,6 +6,7 @@
*/ */
#include <linux/moduleparam.h> #include <linux/moduleparam.h>
#include <linux/debugfs.h>
#include "nvme.h" #include "nvme.h"
static DECLARE_FAULT_ATTR(fail_default_attr); static DECLARE_FAULT_ATTR(fail_default_attr);

View File

@ -3,6 +3,7 @@
#include <linux/kconfig.h> #include <linux/kconfig.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/fault-inject.h> #include <linux/fault-inject.h>
#include <linux/debugfs.h>
#include <linux/module.h> #include <linux/module.h>
#include <ufs/ufshcd.h> #include <ufs/ufshcd.h>
#include "ufs-fault-injection.h" #include "ufs-fault-injection.h"

View File

@ -2,13 +2,17 @@
#ifndef _LINUX_FAULT_INJECT_H #ifndef _LINUX_FAULT_INJECT_H
#define _LINUX_FAULT_INJECT_H #define _LINUX_FAULT_INJECT_H
#include <linux/err.h>
#include <linux/types.h>
struct dentry;
struct kmem_cache;
#ifdef CONFIG_FAULT_INJECTION #ifdef CONFIG_FAULT_INJECTION
#include <linux/types.h> #include <linux/atomic.h>
#include <linux/debugfs.h>
#include <linux/configfs.h> #include <linux/configfs.h>
#include <linux/ratelimit.h> #include <linux/ratelimit.h>
#include <linux/atomic.h>
/* /*
* For explanation of the elements of this struct, see * For explanation of the elements of this struct, see
@ -51,6 +55,28 @@ int setup_fault_attr(struct fault_attr *attr, char *str);
bool should_fail_ex(struct fault_attr *attr, ssize_t size, int flags); bool should_fail_ex(struct fault_attr *attr, ssize_t size, int flags);
bool should_fail(struct fault_attr *attr, ssize_t size); bool should_fail(struct fault_attr *attr, ssize_t size);
#else /* CONFIG_FAULT_INJECTION */
struct fault_attr {
};
#define DECLARE_FAULT_ATTR(name) struct fault_attr name = {}
static inline int setup_fault_attr(struct fault_attr *attr, char *str)
{
return 0; /* Note: 0 means error for __setup() handlers! */
}
static inline bool should_fail_ex(struct fault_attr *attr, ssize_t size, int flags)
{
return false;
}
static inline bool should_fail(struct fault_attr *attr, ssize_t size)
{
return false;
}
#endif /* CONFIG_FAULT_INJECTION */
#ifdef CONFIG_FAULT_INJECTION_DEBUG_FS #ifdef CONFIG_FAULT_INJECTION_DEBUG_FS
struct dentry *fault_create_debugfs_attr(const char *name, struct dentry *fault_create_debugfs_attr(const char *name,
@ -87,10 +113,6 @@ static inline void fault_config_init(struct fault_config *config,
#endif /* CONFIG_FAULT_INJECTION_CONFIGFS */ #endif /* CONFIG_FAULT_INJECTION_CONFIGFS */
#endif /* CONFIG_FAULT_INJECTION */
struct kmem_cache;
#ifdef CONFIG_FAIL_PAGE_ALLOC #ifdef CONFIG_FAIL_PAGE_ALLOC
bool should_fail_alloc_page(gfp_t gfp_mask, unsigned int order); bool should_fail_alloc_page(gfp_t gfp_mask, unsigned int order);
#else #else

View File

@ -10,6 +10,7 @@
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/fault-inject.h> #include <linux/fault-inject.h>
#include <linux/debugfs.h>
#include <linux/mmc/core.h> #include <linux/mmc/core.h>
#include <linux/mmc/card.h> #include <linux/mmc/card.h>

View File

@ -17,6 +17,7 @@
#include <linux/blk-mq.h> #include <linux/blk-mq.h>
#include <linux/devfreq.h> #include <linux/devfreq.h>
#include <linux/fault-inject.h> #include <linux/fault-inject.h>
#include <linux/debugfs.h>
#include <linux/msi.h> #include <linux/msi.h>
#include <linux/pm_runtime.h> #include <linux/pm_runtime.h>
#include <linux/dma-direction.h> #include <linux/dma-direction.h>

View File

@ -34,6 +34,7 @@
#include <linux/compat.h> #include <linux/compat.h>
#include <linux/jhash.h> #include <linux/jhash.h>
#include <linux/pagemap.h> #include <linux/pagemap.h>
#include <linux/debugfs.h>
#include <linux/plist.h> #include <linux/plist.h>
#include <linux/memblock.h> #include <linux/memblock.h>
#include <linux/fault-inject.h> #include <linux/fault-inject.h>

View File

@ -2,6 +2,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/random.h> #include <linux/random.h>
#include <linux/debugfs.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/stat.h> #include <linux/stat.h>
#include <linux/types.h> #include <linux/types.h>

View File

@ -1,5 +1,6 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include <linux/fault-inject.h> #include <linux/fault-inject.h>
#include <linux/debugfs.h>
#include <linux/error-injection.h> #include <linux/error-injection.h>
#include <linux/mm.h> #include <linux/mm.h>

View File

@ -1,6 +1,7 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include <linux/fault-inject.h> #include <linux/fault-inject.h>
#include <linux/error-injection.h> #include <linux/error-injection.h>
#include <linux/debugfs.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/mm.h> #include <linux/mm.h>
#include "slab.h" #include "slab.h"