summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/acpi.h2
-rw-r--r--include/linux/bpf.h2
-rw-r--r--include/linux/compiler_types.h3
-rw-r--r--include/linux/crash_dump.h2
-rw-r--r--include/linux/dma-fence-chain.h2
-rw-r--r--include/linux/fsverity.h15
-rw-r--r--include/linux/gameport.h2
-rw-r--r--include/linux/gfp.h4
-rw-r--r--include/linux/io-mapping.h2
-rw-r--r--include/linux/io_uring/cmd.h15
-rw-r--r--include/linux/kvm_host.h2
-rw-r--r--include/linux/ntb.h14
-rw-r--r--include/linux/overflow.h2
-rw-r--r--include/linux/skmsg.h3
-rw-r--r--include/linux/slab.h54
-rw-r--r--include/linux/spi/spi.h2
16 files changed, 59 insertions, 67 deletions
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 3a412dcebc29..4d2f0bed7a06 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -66,7 +66,7 @@ static inline struct fwnode_handle *acpi_alloc_fwnode_static(void)
{
struct fwnode_handle *fwnode;
- fwnode = kzalloc(sizeof(struct fwnode_handle), GFP_KERNEL);
+ fwnode = kzalloc_obj(struct fwnode_handle);
if (!fwnode)
return NULL;
diff --git a/include/linux/bpf.h b/include/linux/bpf.h
index cd9b96434904..b78b53198a2e 100644
--- a/include/linux/bpf.h
+++ b/include/linux/bpf.h
@@ -2299,7 +2299,7 @@ static inline bool bpf_map_flags_access_ok(u32 access_flags)
static inline struct bpf_map_owner *bpf_map_owner_alloc(struct bpf_map *map)
{
- return kzalloc(sizeof(*map->owner), GFP_ATOMIC);
+ return kzalloc_obj(*map->owner, GFP_ATOMIC);
}
static inline void bpf_map_owner_free(struct bpf_map *map)
diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h
index b1b141394d13..890076d0974b 100644
--- a/include/linux/compiler_types.h
+++ b/include/linux/compiler_types.h
@@ -552,7 +552,8 @@ struct ftrace_likely_data {
* gcc: https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html#index-_005f_005fbuiltin_005fcounted_005fby_005fref
* clang: https://clang.llvm.org/docs/LanguageExtensions.html#builtin-counted-by-ref
*/
-#if __has_builtin(__builtin_counted_by_ref)
+#if __has_builtin(__builtin_counted_by_ref) && \
+ !defined(CONFIG_CC_HAS_BROKEN_COUNTED_BY_REF)
/**
* __flex_counter() - Get pointer to counter member for the given
* flexible array, if it was annotated with __counted_by()
diff --git a/include/linux/crash_dump.h b/include/linux/crash_dump.h
index dd6fc3b2133b..8315270e27b7 100644
--- a/include/linux/crash_dump.h
+++ b/include/linux/crash_dump.h
@@ -136,7 +136,7 @@ struct vmcore_range {
static inline int vmcore_alloc_add_range(struct list_head *list,
unsigned long long paddr, unsigned long long size)
{
- struct vmcore_range *m = kzalloc(sizeof(*m), GFP_KERNEL);
+ struct vmcore_range *m = kzalloc_obj(*m);
if (!m)
return -ENOMEM;
diff --git a/include/linux/dma-fence-chain.h b/include/linux/dma-fence-chain.h
index 68c3c1e41014..5cd3ba53b4a1 100644
--- a/include/linux/dma-fence-chain.h
+++ b/include/linux/dma-fence-chain.h
@@ -91,7 +91,7 @@ dma_fence_chain_contained(struct dma_fence *fence)
* intentional to enforce typesafety.
*/
#define dma_fence_chain_alloc() \
- ((struct dma_fence_chain *)kmalloc(sizeof(struct dma_fence_chain), GFP_KERNEL))
+ kmalloc_obj(struct dma_fence_chain)
/**
* dma_fence_chain_free
diff --git a/include/linux/fsverity.h b/include/linux/fsverity.h
index fed91023bea9..a8f9aa75b792 100644
--- a/include/linux/fsverity.h
+++ b/include/linux/fsverity.h
@@ -195,6 +195,8 @@ int fsverity_ioctl_read_metadata(struct file *filp, const void __user *uarg);
/* verify.c */
+void fsverity_readahead(struct fsverity_info *vi, pgoff_t index,
+ unsigned long nr_pages);
bool fsverity_verify_blocks(struct fsverity_info *vi, struct folio *folio,
size_t len, size_t offset);
void fsverity_verify_bio(struct fsverity_info *vi, struct bio *bio);
@@ -255,6 +257,11 @@ static inline int fsverity_ioctl_read_metadata(struct file *filp,
/* verify.c */
+static inline void fsverity_readahead(struct fsverity_info *vi, pgoff_t index,
+ unsigned long nr_pages)
+{
+}
+
static inline bool fsverity_verify_blocks(struct fsverity_info *vi,
struct folio *folio, size_t len,
size_t offset)
@@ -282,12 +289,6 @@ static inline bool fsverity_verify_folio(struct fsverity_info *vi,
return fsverity_verify_blocks(vi, folio, folio_size(folio), 0);
}
-static inline bool fsverity_verify_page(struct fsverity_info *vi,
- struct page *page)
-{
- return fsverity_verify_blocks(vi, page_folio(page), PAGE_SIZE, 0);
-}
-
/**
* fsverity_file_open() - prepare to open a verity file
* @inode: the inode being opened
@@ -309,8 +310,6 @@ static inline int fsverity_file_open(struct inode *inode, struct file *filp)
}
void fsverity_cleanup_inode(struct inode *inode);
-void fsverity_readahead(struct fsverity_info *vi, pgoff_t index,
- unsigned long nr_pages);
struct page *generic_read_merkle_tree_page(struct inode *inode, pgoff_t index);
void generic_readahead_merkle_tree(struct inode *inode, pgoff_t index,
diff --git a/include/linux/gameport.h b/include/linux/gameport.h
index 86d62fdafd7a..9625347c7ac0 100644
--- a/include/linux/gameport.h
+++ b/include/linux/gameport.h
@@ -97,7 +97,7 @@ void gameport_set_phys(struct gameport *gameport, const char *fmt, ...)
static inline struct gameport *gameport_allocate_port(void)
{
- struct gameport *gameport = kzalloc(sizeof(struct gameport), GFP_KERNEL);
+ struct gameport *gameport = kzalloc_obj(struct gameport);
return gameport;
}
diff --git a/include/linux/gfp.h b/include/linux/gfp.h
index 6ecf6dda93e0..90536b2bc42e 100644
--- a/include/linux/gfp.h
+++ b/include/linux/gfp.h
@@ -13,6 +13,10 @@
struct vm_area_struct;
struct mempolicy;
+/* Helper macro to avoid gfp flags if they are the default one */
+#define __default_gfp(a,b,...) b
+#define default_gfp(...) __default_gfp(,##__VA_ARGS__,GFP_KERNEL)
+
/* Convert GFP flags to their corresponding migrate type */
#define GFP_MOVABLE_MASK (__GFP_RECLAIMABLE|__GFP_MOVABLE)
#define GFP_MOVABLE_SHIFT 3
diff --git a/include/linux/io-mapping.h b/include/linux/io-mapping.h
index c16353cc6e3c..e5a884e72f29 100644
--- a/include/linux/io-mapping.h
+++ b/include/linux/io-mapping.h
@@ -206,7 +206,7 @@ io_mapping_create_wc(resource_size_t base,
{
struct io_mapping *iomap;
- iomap = kmalloc(sizeof(*iomap), GFP_KERNEL);
+ iomap = kmalloc_obj(*iomap);
if (!iomap)
return NULL;
diff --git a/include/linux/io_uring/cmd.h b/include/linux/io_uring/cmd.h
index 375fd048c4cb..331dcbefe72f 100644
--- a/include/linux/io_uring/cmd.h
+++ b/include/linux/io_uring/cmd.h
@@ -20,10 +20,17 @@ struct io_uring_cmd {
u8 unused[8];
};
-static inline const void *io_uring_sqe_cmd(const struct io_uring_sqe *sqe)
-{
- return sqe->cmd;
-}
+#define io_uring_sqe128_cmd(sqe, type) ({ \
+ BUILD_BUG_ON(sizeof(type) > ((2 * sizeof(struct io_uring_sqe)) - \
+ offsetof(struct io_uring_sqe, cmd))); \
+ (const type *)(sqe)->cmd; \
+})
+
+#define io_uring_sqe_cmd(sqe, type) ({ \
+ BUILD_BUG_ON(sizeof(type) > (sizeof(struct io_uring_sqe) - \
+ offsetof(struct io_uring_sqe, cmd))); \
+ (const type *)(sqe)->cmd; \
+})
static inline void io_uring_cmd_private_sz_check(size_t cmd_sz)
{
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index d42a95cbcfbc..dde605cb894e 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -1664,7 +1664,7 @@ void kvm_arch_create_vm_debugfs(struct kvm *kvm);
*/
static inline struct kvm *kvm_arch_alloc_vm(void)
{
- return kzalloc(sizeof(struct kvm), GFP_KERNEL_ACCOUNT);
+ return kzalloc_obj(struct kvm, GFP_KERNEL_ACCOUNT);
}
#endif
diff --git a/include/linux/ntb.h b/include/linux/ntb.h
index 191b524e5c0d..8ff9d663096b 100644
--- a/include/linux/ntb.h
+++ b/include/linux/ntb.h
@@ -1647,12 +1647,8 @@ int ntbm_msi_request_threaded_irq(struct ntb_dev *ntb, irq_handler_t handler,
irq_handler_t thread_fn,
const char *name, void *dev_id,
struct ntb_msi_desc *msi_desc);
-void ntbm_msi_free_irq(struct ntb_dev *ntb, unsigned int irq, void *dev_id);
int ntb_msi_peer_trigger(struct ntb_dev *ntb, int peer,
struct ntb_msi_desc *desc);
-int ntb_msi_peer_addr(struct ntb_dev *ntb, int peer,
- struct ntb_msi_desc *desc,
- phys_addr_t *msi_addr);
#else /* not CONFIG_NTB_MSI */
@@ -1674,21 +1670,11 @@ static inline int ntbm_msi_request_threaded_irq(struct ntb_dev *ntb,
{
return -EOPNOTSUPP;
}
-static inline void ntbm_msi_free_irq(struct ntb_dev *ntb, unsigned int irq,
- void *dev_id) {}
static inline int ntb_msi_peer_trigger(struct ntb_dev *ntb, int peer,
struct ntb_msi_desc *desc)
{
return -EOPNOTSUPP;
}
-static inline int ntb_msi_peer_addr(struct ntb_dev *ntb, int peer,
- struct ntb_msi_desc *desc,
- phys_addr_t *msi_addr)
-{
- return -EOPNOTSUPP;
-
-}
-
#endif /* CONFIG_NTB_MSI */
static inline int ntbm_msi_request_irq(struct ntb_dev *ntb,
diff --git a/include/linux/overflow.h b/include/linux/overflow.h
index a5e95dbce220..eddd987a8513 100644
--- a/include/linux/overflow.h
+++ b/include/linux/overflow.h
@@ -570,7 +570,7 @@ static inline size_t __must_check size_sub(size_t minuend, size_t subtrahend)
* @FAM is not annotated with __counted_by(), always returns true.
*/
#define overflows_flex_counter_type(TYPE, FAM, COUNT) \
- (!overflows_type(COUNT, typeof_flex_counter(((TYPE *)NULL)->FAM)))
+ (overflows_type(COUNT, typeof_flex_counter(((TYPE *)NULL)->FAM)))
/**
* __set_flex_counter() - Set the counter associated with the given flexible
diff --git a/include/linux/skmsg.h b/include/linux/skmsg.h
index 829b281d6c9c..19f4f253b4f9 100644
--- a/include/linux/skmsg.h
+++ b/include/linux/skmsg.h
@@ -460,8 +460,7 @@ int sk_psock_msg_verdict(struct sock *sk, struct sk_psock *psock,
* intentional to enforce typesafety.
*/
#define sk_psock_init_link() \
- ((struct sk_psock_link *)kzalloc(sizeof(struct sk_psock_link), \
- GFP_ATOMIC | __GFP_NOWARN))
+ kzalloc_obj(struct sk_psock_link, GFP_ATOMIC | __GFP_NOWARN)
static inline void sk_psock_free_link(struct sk_psock_link *link)
{
diff --git a/include/linux/slab.h b/include/linux/slab.h
index c5fde8740281..a5a5e4108ae5 100644
--- a/include/linux/slab.h
+++ b/include/linux/slab.h
@@ -1003,11 +1003,7 @@ void *kmalloc_nolock_noprof(size_t size, gfp_t gfp_flags, int node);
({ \
const size_t __count = (COUNT); \
const size_t __obj_size = struct_size_t(TYPE, FAM, __count); \
- TYPE *__obj_ptr; \
- if (WARN_ON_ONCE(overflows_flex_counter_type(TYPE, FAM, __count))) \
- __obj_ptr = NULL; \
- else \
- __obj_ptr = KMALLOC(__obj_size, GFP); \
+ TYPE *__obj_ptr = KMALLOC(__obj_size, GFP); \
if (__obj_ptr) \
__set_flex_counter(__obj_ptr->FAM, __count); \
__obj_ptr; \
@@ -1021,8 +1017,8 @@ void *kmalloc_nolock_noprof(size_t size, gfp_t gfp_flags, int node);
* Returns: newly allocated pointer to a @VAR_OR_TYPE on success, or NULL
* on failure.
*/
-#define kmalloc_obj(VAR_OR_TYPE, GFP) \
- __alloc_objs(kmalloc, GFP, typeof(VAR_OR_TYPE), 1)
+#define kmalloc_obj(VAR_OR_TYPE, ...) \
+ __alloc_objs(kmalloc, default_gfp(__VA_ARGS__), typeof(VAR_OR_TYPE), 1)
/**
* kmalloc_objs - Allocate an array of the given type
@@ -1033,8 +1029,8 @@ void *kmalloc_nolock_noprof(size_t size, gfp_t gfp_flags, int node);
* Returns: newly allocated pointer to array of @VAR_OR_TYPE on success,
* or NULL on failure.
*/
-#define kmalloc_objs(VAR_OR_TYPE, COUNT, GFP) \
- __alloc_objs(kmalloc, GFP, typeof(VAR_OR_TYPE), COUNT)
+#define kmalloc_objs(VAR_OR_TYPE, COUNT, ...) \
+ __alloc_objs(kmalloc, default_gfp(__VA_ARGS__), typeof(VAR_OR_TYPE), COUNT)
/**
* kmalloc_flex - Allocate a single instance of the given flexible structure
@@ -1048,32 +1044,32 @@ void *kmalloc_nolock_noprof(size_t size, gfp_t gfp_flags, int node);
* will immediately fail if @COUNT is larger than what the type of the
* struct's counter variable can represent.
*/
-#define kmalloc_flex(VAR_OR_TYPE, FAM, COUNT, GFP) \
- __alloc_flex(kmalloc, GFP, typeof(VAR_OR_TYPE), FAM, COUNT)
+#define kmalloc_flex(VAR_OR_TYPE, FAM, COUNT, ...) \
+ __alloc_flex(kmalloc, default_gfp(__VA_ARGS__), typeof(VAR_OR_TYPE), FAM, COUNT)
/* All kzalloc aliases for kmalloc_(obj|objs|flex). */
-#define kzalloc_obj(P, GFP) \
- __alloc_objs(kzalloc, GFP, typeof(P), 1)
-#define kzalloc_objs(P, COUNT, GFP) \
- __alloc_objs(kzalloc, GFP, typeof(P), COUNT)
-#define kzalloc_flex(P, FAM, COUNT, GFP) \
- __alloc_flex(kzalloc, GFP, typeof(P), FAM, COUNT)
+#define kzalloc_obj(P, ...) \
+ __alloc_objs(kzalloc, default_gfp(__VA_ARGS__), typeof(P), 1)
+#define kzalloc_objs(P, COUNT, ...) \
+ __alloc_objs(kzalloc, default_gfp(__VA_ARGS__), typeof(P), COUNT)
+#define kzalloc_flex(P, FAM, COUNT, ...) \
+ __alloc_flex(kzalloc, default_gfp(__VA_ARGS__), typeof(P), FAM, COUNT)
/* All kvmalloc aliases for kmalloc_(obj|objs|flex). */
-#define kvmalloc_obj(P, GFP) \
- __alloc_objs(kvmalloc, GFP, typeof(P), 1)
-#define kvmalloc_objs(P, COUNT, GFP) \
- __alloc_objs(kvmalloc, GFP, typeof(P), COUNT)
-#define kvmalloc_flex(P, FAM, COUNT, GFP) \
- __alloc_flex(kvmalloc, GFP, typeof(P), FAM, COUNT)
+#define kvmalloc_obj(P, ...) \
+ __alloc_objs(kvmalloc, default_gfp(__VA_ARGS__), typeof(P), 1)
+#define kvmalloc_objs(P, COUNT, ...) \
+ __alloc_objs(kvmalloc, default_gfp(__VA_ARGS__), typeof(P), COUNT)
+#define kvmalloc_flex(P, FAM, COUNT, ...) \
+ __alloc_flex(kvmalloc, default_gfp(__VA_ARGS__), typeof(P), FAM, COUNT)
/* All kvzalloc aliases for kmalloc_(obj|objs|flex). */
-#define kvzalloc_obj(P, GFP) \
- __alloc_objs(kvzalloc, GFP, typeof(P), 1)
-#define kvzalloc_objs(P, COUNT, GFP) \
- __alloc_objs(kvzalloc, GFP, typeof(P), COUNT)
-#define kvzalloc_flex(P, FAM, COUNT, GFP) \
- __alloc_flex(kvzalloc, GFP, typeof(P), FAM, COUNT)
+#define kvzalloc_obj(P, ...) \
+ __alloc_objs(kvzalloc, default_gfp(__VA_ARGS__), typeof(P), 1)
+#define kvzalloc_objs(P, COUNT, ...) \
+ __alloc_objs(kvzalloc, default_gfp(__VA_ARGS__), typeof(P), COUNT)
+#define kvzalloc_flex(P, FAM, COUNT, ...) \
+ __alloc_flex(kvzalloc, default_gfp(__VA_ARGS__), typeof(P), FAM, COUNT)
#define kmem_buckets_alloc(_b, _size, _flags) \
alloc_hooks(__kmalloc_node_noprof(PASS_BUCKET_PARAMS(_size, _b), _flags, NUMA_NO_NODE))
diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h
index fd8dce4169f7..af7cfee7b8f6 100644
--- a/include/linux/spi/spi.h
+++ b/include/linux/spi/spi.h
@@ -1309,7 +1309,7 @@ static inline struct spi_message *spi_message_alloc(unsigned ntrans, gfp_t flags
} *mwt;
unsigned i;
- mwt = kzalloc(struct_size(mwt, t, ntrans), flags);
+ mwt = kzalloc_flex(*mwt, t, ntrans, flags);
if (!mwt)
return NULL;