@@ -891,19 +891,19 @@ enum vm_fault_reason {
VM_FAULT_HWPOISON_LARGE | VM_FAULT_FALLBACK)
#define VM_FAULT_RESULT_TRACE \
- { VM_FAULT_OOM, "OOM" }, \
- { VM_FAULT_SIGBUS, "SIGBUS" }, \
- { VM_FAULT_MAJOR, "MAJOR" }, \
- { VM_FAULT_WRITE, "WRITE" }, \
- { VM_FAULT_HWPOISON, "HWPOISON" }, \
- { VM_FAULT_HWPOISON_LARGE, "HWPOISON_LARGE" }, \
- { VM_FAULT_SIGSEGV, "SIGSEGV" }, \
- { VM_FAULT_NOPAGE, "NOPAGE" }, \
- { VM_FAULT_LOCKED, "LOCKED" }, \
- { VM_FAULT_RETRY, "RETRY" }, \
- { VM_FAULT_FALLBACK, "FALLBACK" }, \
- { VM_FAULT_DONE_COW, "DONE_COW" }, \
- { VM_FAULT_NEEDDSYNC, "NEEDDSYNC" }
+ { (__force unsigned int) VM_FAULT_OOM, "OOM" }, \
+ { (__force unsigned int) VM_FAULT_SIGBUS, "SIGBUS" }, \
+ { (__force unsigned int) VM_FAULT_MAJOR, "MAJOR" }, \
+ { (__force unsigned int) VM_FAULT_WRITE, "WRITE" }, \
+ { (__force unsigned int) VM_FAULT_HWPOISON, "HWPOISON" }, \
+ { (__force unsigned int) VM_FAULT_HWPOISON_LARGE, "HWPOISON_LARGE" }, \
+ { (__force unsigned int) VM_FAULT_SIGSEGV, "SIGSEGV" }, \
+ { (__force unsigned int) VM_FAULT_NOPAGE, "NOPAGE" }, \
+ { (__force unsigned int) VM_FAULT_LOCKED, "LOCKED" }, \
+ { (__force unsigned int) VM_FAULT_RETRY, "RETRY" }, \
+ { (__force unsigned int) VM_FAULT_FALLBACK, "FALLBACK" }, \
+ { (__force unsigned int) VM_FAULT_DONE_COW, "DONE_COW" }, \
+ { (__force unsigned int) VM_FAULT_NEEDDSYNC, "NEEDDSYNC" }
struct vm_special_mapping {
const char *name; /* The name, e.g. "[vdso]". */
@@ -9,7 +9,7 @@
DECLARE_EVENT_CLASS(dax_pmd_fault_class,
TP_PROTO(struct inode *inode, struct vm_fault *vmf,
- pgoff_t max_pgoff, int result),
+ pgoff_t max_pgoff, vm_fault_t result),
TP_ARGS(inode, vmf, max_pgoff, result),
TP_STRUCT__entry(
__field(unsigned long, ino)
@@ -21,7 +21,7 @@ DECLARE_EVENT_CLASS(dax_pmd_fault_class,
__field(pgoff_t, max_pgoff)
__field(dev_t, dev)
__field(unsigned int, flags)
- __field(int, result)
+ __field(unsigned int, result)
),
TP_fast_assign(
__entry->dev = inode->i_sb->s_dev;
@@ -33,7 +33,7 @@ DECLARE_EVENT_CLASS(dax_pmd_fault_class,
__entry->flags = vmf->flags;
__entry->pgoff = vmf->pgoff;
__entry->max_pgoff = max_pgoff;
- __entry->result = result;
+ __entry->result = (__force unsigned int) result;
),
TP_printk("dev %d:%d ino %#lx %s %s address %#lx vm_start "
"%#lx vm_end %#lx pgoff %#lx max_pgoff %#lx %s",
@@ -54,7 +54,7 @@ DECLARE_EVENT_CLASS(dax_pmd_fault_class,
#define DEFINE_PMD_FAULT_EVENT(name) \
DEFINE_EVENT(dax_pmd_fault_class, name, \
TP_PROTO(struct inode *inode, struct vm_fault *vmf, \
- pgoff_t max_pgoff, int result), \
+ pgoff_t max_pgoff, vm_fault_t result), \
TP_ARGS(inode, vmf, max_pgoff, result))
DEFINE_PMD_FAULT_EVENT(dax_pmd_fault);
@@ -151,7 +151,7 @@ DEFINE_EVENT(dax_pmd_insert_mapping_class, name, \
DEFINE_PMD_INSERT_MAPPING_EVENT(dax_pmd_insert_mapping);
DECLARE_EVENT_CLASS(dax_pte_fault_class,
- TP_PROTO(struct inode *inode, struct vm_fault *vmf, int result),
+ TP_PROTO(struct inode *inode, struct vm_fault *vmf, vm_fault_t result),
TP_ARGS(inode, vmf, result),
TP_STRUCT__entry(
__field(unsigned long, ino)
@@ -160,7 +160,7 @@ DECLARE_EVENT_CLASS(dax_pte_fault_class,
__field(pgoff_t, pgoff)
__field(dev_t, dev)
__field(unsigned int, flags)
- __field(int, result)
+ __field(unsigned int, result)
),
TP_fast_assign(
__entry->dev = inode->i_sb->s_dev;
@@ -169,7 +169,7 @@ DECLARE_EVENT_CLASS(dax_pte_fault_class,
__entry->address = vmf->address;
__entry->flags = vmf->flags;
__entry->pgoff = vmf->pgoff;
- __entry->result = result;
+ __entry->result = (__force unsigned int) result;
),
TP_printk("dev %d:%d ino %#lx %s %s address %#lx pgoff %#lx %s",
MAJOR(__entry->dev),
@@ -185,7 +185,7 @@ DECLARE_EVENT_CLASS(dax_pte_fault_class,
#define DEFINE_PTE_FAULT_EVENT(name) \
DEFINE_EVENT(dax_pte_fault_class, name, \
- TP_PROTO(struct inode *inode, struct vm_fault *vmf, int result), \
+ TP_PROTO(struct inode *inode, struct vm_fault *vmf, vm_fault_t result), \
TP_ARGS(inode, vmf, result))
DEFINE_PTE_FAULT_EVENT(dax_pte_fault);
Now that the dax-mapping-entry code has moved to a common location take the opportunity to fixup some long standing sparse warnings. In this case the tracepoints have long specified the wrong type for the traced return code. Pass the correct type, but handle casting it back to 'unsigned int' inside the trace helpers as the helpers are not prepared to handle restricted types. Fixes: drivers/dax/mapping.c:1031:55: sparse: warning: incorrect type in argument 3 (different base types) drivers/dax/mapping.c:1031:55: sparse: expected int result drivers/dax/mapping.c:1031:55: sparse: got restricted vm_fault_t drivers/dax/mapping.c:1046:58: sparse: warning: incorrect type in argument 3 (different base types) drivers/dax/mapping.c:1046:58: sparse: expected int result drivers/dax/mapping.c:1046:58: sparse: got restricted vm_fault_t [assigned] [usertype] ret Reported-by: Reported-by: kernel test robot <lkp@intel.com> Link: http://lore.kernel.org/r/202210091141.cHaQEuCs-lkp@intel.com Signed-off-by: Dan Williams <dan.j.williams@intel.com> --- include/linux/mm_types.h | 26 +++++++++++++------------- include/trace/events/fs_dax.h | 16 ++++++++-------- 2 files changed, 21 insertions(+), 21 deletions(-)