Re: [PATCH v3 2/2] mm: mmap: add trace point of vm_unmapped_area

From: Matthew Wilcox
Date: Sun Mar 29 2020 - 12:14:18 EST


On Fri, Mar 20, 2020 at 02:58:23PM +0900, Jaewon Kim wrote:
> + TP_printk("addr=%lx err=%ld total_vm=0x%lx flags=0x%lx len=0x%lx lo=0x%lx hi=0x%lx mask=0x%lx ofs=0x%lx\n",
> + IS_ERR_VALUE(__entry->addr) ? 0 : __entry->addr,
> + IS_ERR_VALUE(__entry->addr) ? __entry->addr : 0,

I didn't see the IS_ERR_VALUE problem that Vlastimil mentioned get resolved?

I might suggest ...

+++ b/include/linux/err.h
@@ -19,7 +19,8 @@

#ifndef __ASSEMBLY__

-#define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
+#define __IS_ERR_VALUE(x) ((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
+#define IS_ERR_VALUE(x) unlikely(__IS_ERR_VALUE(x))

static inline void * __must_check ERR_PTR(long error)
{

and then you can use __IS_ERR_VALUE() which removes the unlikely() problem.