History

tracing: incorrect gfp_t conversion

Fixes the following sparse warnings: include/trace/events/*: sparse: cast to restricted gfp_t include/trace/events/*: sparse: restricted gfp_t degrades to integer gfp_t type is bitwise and requires __force attributes for any casts.

Vasily Averin committed 4 years ago

Commit fe573321 parent e7be8d17 files · +59 −59Browse files

Unified · Split

7 files
  1. include/linux/gfp.h +1 −1
  2. include/trace/events/btrfs.h +2 −2
  3. include/trace/events/compaction.h +2 −2
  4. include/trace/events/kmem.h +6 −6
  5. include/trace/events/mmflags.h +39 −39
  6. include/trace/events/vmscan.h +8 −8
  7. mm/compaction.c +1 −1
include/linux/gfp.h+1−1
@@ -367,7 +367,7 @@ static inline int gfp_migratetype(const gfp_t gfp_flags) · 366 unmodified lines
367 return MIGRATE_UNMOVABLE;367 return MIGRATE_UNMOVABLE;
368 368
369 /* Group based on mobility */369 /* Group based on mobility */
370 return (gfp_flags & GFP_MOVABLE_MASK) >> GFP_MOVABLE_SHIFT;370 return (__force unsigned long)(gfp_flags & GFP_MOVABLE_MASK) >> GFP_MOVABLE_SHIFT;
371}371}
372#undef GFP_MOVABLE_MASK372#undef GFP_MOVABLE_MASK
373#undef GFP_MOVABLE_SHIFT373#undef GFP_MOVABLE_SHIFT
include/trace/events/btrfs.h+2−2
@@ -1344,13 +1344,13 @@ TRACE_EVENT(alloc_extent_state, · 1343 unmodified lines
1344 1344
1345 TP_STRUCT__entry(1345 TP_STRUCT__entry(
1346 __field(const struct extent_state *, state)1346 __field(const struct extent_state *, state)
1347 __field(gfp_t, mask)1347 __field(unsigned long, mask)
1348 __field(const void*, ip)1348 __field(const void*, ip)
1349 ),1349 ),
1350 1350
1351 TP_fast_assign(1351 TP_fast_assign(
1352 __entry->state = state,1352 __entry->state = state,
1353 __entry->mask = mask,1353 __entry->mask = (__force unsigned long)mask,
1354 __entry->ip = (const void *)IP1354 __entry->ip = (const void *)IP
1355 ),1355 ),
1356 1356
include/trace/events/compaction.h+2−2
@@ -162,13 +162,13 @@ TRACE_EVENT(mm_compaction_try_to_compact_pages, · 161 unmodified lines
162 162
163 TP_STRUCT__entry(163 TP_STRUCT__entry(
164 __field(int, order)164 __field(int, order)
165 __field(gfp_t, gfp_mask)165 __field(unsigned long, gfp_mask)
166 __field(int, prio)166 __field(int, prio)
167 ),167 ),
168 168
169 TP_fast_assign(169 TP_fast_assign(
170 __entry->order = order;170 __entry->order = order;
171 __entry->gfp_mask = gfp_mask;171 __entry->gfp_mask = (__force unsigned long)gfp_mask;
172 __entry->prio = prio;172 __entry->prio = prio;
173 ),173 ),
174 174
include/trace/events/kmem.h+6−6
@@ -24,7 +24,7 @@ DECLARE_EVENT_CLASS(kmem_alloc, · 23 unmodified lines
24 __field( const void *, ptr )24 __field( const void *, ptr )
25 __field( size_t, bytes_req )25 __field( size_t, bytes_req )
26 __field( size_t, bytes_alloc )26 __field( size_t, bytes_alloc )
27 __field( gfp_t, gfp_flags )27 __field( unsigned long, gfp_flags )
28 ),28 ),
29 29
30 TP_fast_assign(30 TP_fast_assign(
@@ -32,7 +32,7 @@ DECLARE_EVENT_CLASS(kmem_alloc, · 1 unmodified line
32 __entry->ptr = ptr;32 __entry->ptr = ptr;
33 __entry->bytes_req = bytes_req;33 __entry->bytes_req = bytes_req;
34 __entry->bytes_alloc = bytes_alloc;34 __entry->bytes_alloc = bytes_alloc;
35 __entry->gfp_flags = gfp_flags;35 __entry->gfp_flags = (__force unsigned long)gfp_flags;
36 ),36 ),
37 37
38 TP_printk("call_site=%pS ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s",38 TP_printk("call_site=%pS ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%s",
@@ -75,7 +75,7 @@ DECLARE_EVENT_CLASS(kmem_alloc_node, · 36 unmodified lines
75 __field( const void *, ptr )75 __field( const void *, ptr )
76 __field( size_t, bytes_req )76 __field( size_t, bytes_req )
77 __field( size_t, bytes_alloc )77 __field( size_t, bytes_alloc )
78 __field( gfp_t, gfp_flags )78 __field( unsigned long, gfp_flags )
79 __field( int, node )79 __field( int, node )
80 ),80 ),
81 81
@@ -84,7 +84,7 @@ DECLARE_EVENT_CLASS(kmem_alloc_node, · 2 unmodified lines
84 __entry->ptr = ptr;84 __entry->ptr = ptr;
85 __entry->bytes_req = bytes_req;85 __entry->bytes_req = bytes_req;
86 __entry->bytes_alloc = bytes_alloc;86 __entry->bytes_alloc = bytes_alloc;
87 __entry->gfp_flags = gfp_flags;87 __entry->gfp_flags = (__force unsigned long)gfp_flags;
88 __entry->node = node;88 __entry->node = node;
89 ),89 ),
90 90
@@ -208,14 +208,14 @@ TRACE_EVENT(mm_page_alloc, · 117 unmodified lines
208 TP_STRUCT__entry(208 TP_STRUCT__entry(
209 __field( unsigned long, pfn )209 __field( unsigned long, pfn )
210 __field( unsigned int, order )210 __field( unsigned int, order )
211 __field( gfp_t, gfp_flags )211 __field( unsigned long, gfp_flags )
212 __field( int, migratetype )212 __field( int, migratetype )
213 ),213 ),
214 214
215 TP_fast_assign(215 TP_fast_assign(
216 __entry->pfn = page ? page_to_pfn(page) : -1UL;216 __entry->pfn = page ? page_to_pfn(page) : -1UL;
217 __entry->order = order;217 __entry->order = order;
218 __entry->gfp_flags = gfp_flags;218 __entry->gfp_flags = (__force unsigned long)gfp_flags;
219 __entry->migratetype = migratetype;219 __entry->migratetype = migratetype;
220 ),220 ),
221 221
include/trace/events/mmflags.h+39−39
@@ -14,48 +14,48 @@ · 13 unmodified lines
14 */14 */
15 15
16#define __def_gfpflag_names \16#define __def_gfpflag_names \
17 {(unsigned long)GFP_TRANSHUGE, "GFP_TRANSHUGE"}, \17 {(__force unsigned long)GFP_TRANSHUGE, "GFP_TRANSHUGE"}, \
18 {(unsigned long)GFP_TRANSHUGE_LIGHT, "GFP_TRANSHUGE_LIGHT"}, \18 {(__force unsigned long)GFP_TRANSHUGE_LIGHT, "GFP_TRANSHUGE_LIGHT"}, \
19 {(unsigned long)GFP_HIGHUSER_MOVABLE, "GFP_HIGHUSER_MOVABLE"},\19 {(__force unsigned long)GFP_HIGHUSER_MOVABLE, "GFP_HIGHUSER_MOVABLE"},\
20 {(unsigned long)GFP_HIGHUSER, "GFP_HIGHUSER"}, \20 {(__force unsigned long)GFP_HIGHUSER, "GFP_HIGHUSER"}, \
21 {(unsigned long)GFP_USER, "GFP_USER"}, \21 {(__force unsigned long)GFP_USER, "GFP_USER"}, \
22 {(unsigned long)GFP_KERNEL_ACCOUNT, "GFP_KERNEL_ACCOUNT"}, \22 {(__force unsigned long)GFP_KERNEL_ACCOUNT, "GFP_KERNEL_ACCOUNT"}, \
23 {(unsigned long)GFP_KERNEL, "GFP_KERNEL"}, \23 {(__force unsigned long)GFP_KERNEL, "GFP_KERNEL"}, \
24 {(unsigned long)GFP_NOFS, "GFP_NOFS"}, \24 {(__force unsigned long)GFP_NOFS, "GFP_NOFS"}, \
25 {(unsigned long)GFP_ATOMIC, "GFP_ATOMIC"}, \25 {(__force unsigned long)GFP_ATOMIC, "GFP_ATOMIC"}, \
26 {(unsigned long)GFP_NOIO, "GFP_NOIO"}, \26 {(__force unsigned long)GFP_NOIO, "GFP_NOIO"}, \
27 {(unsigned long)GFP_NOWAIT, "GFP_NOWAIT"}, \27 {(__force unsigned long)GFP_NOWAIT, "GFP_NOWAIT"}, \
28 {(unsigned long)GFP_DMA, "GFP_DMA"}, \28 {(__force unsigned long)GFP_DMA, "GFP_DMA"}, \
29 {(unsigned long)__GFP_HIGHMEM, "__GFP_HIGHMEM"}, \29 {(__force unsigned long)__GFP_HIGHMEM, "__GFP_HIGHMEM"}, \
30 {(unsigned long)GFP_DMA32, "GFP_DMA32"}, \30 {(__force unsigned long)GFP_DMA32, "GFP_DMA32"}, \
31 {(unsigned long)__GFP_HIGH, "__GFP_HIGH"}, \31 {(__force unsigned long)__GFP_HIGH, "__GFP_HIGH"}, \
32 {(unsigned long)__GFP_ATOMIC, "__GFP_ATOMIC"}, \32 {(__force unsigned long)__GFP_ATOMIC, "__GFP_ATOMIC"}, \
33 {(unsigned long)__GFP_IO, "__GFP_IO"}, \33 {(__force unsigned long)__GFP_IO, "__GFP_IO"}, \
34 {(unsigned long)__GFP_FS, "__GFP_FS"}, \34 {(__force unsigned long)__GFP_FS, "__GFP_FS"}, \
35 {(unsigned long)__GFP_NOWARN, "__GFP_NOWARN"}, \35 {(__force unsigned long)__GFP_NOWARN, "__GFP_NOWARN"}, \
36 {(unsigned long)__GFP_RETRY_MAYFAIL, "__GFP_RETRY_MAYFAIL"}, \36 {(__force unsigned long)__GFP_RETRY_MAYFAIL, "__GFP_RETRY_MAYFAIL"}, \
37 {(unsigned long)__GFP_NOFAIL, "__GFP_NOFAIL"}, \37 {(__force unsigned long)__GFP_NOFAIL, "__GFP_NOFAIL"}, \
38 {(unsigned long)__GFP_NORETRY, "__GFP_NORETRY"}, \38 {(__force unsigned long)__GFP_NORETRY, "__GFP_NORETRY"}, \
39 {(unsigned long)__GFP_COMP, "__GFP_COMP"}, \39 {(__force unsigned long)__GFP_COMP, "__GFP_COMP"}, \
40 {(unsigned long)__GFP_ZERO, "__GFP_ZERO"}, \40 {(__force unsigned long)__GFP_ZERO, "__GFP_ZERO"}, \
41 {(unsigned long)__GFP_NOMEMALLOC, "__GFP_NOMEMALLOC"}, \41 {(__force unsigned long)__GFP_NOMEMALLOC, "__GFP_NOMEMALLOC"}, \
42 {(unsigned long)__GFP_MEMALLOC, "__GFP_MEMALLOC"}, \42 {(__force unsigned long)__GFP_MEMALLOC, "__GFP_MEMALLOC"}, \
43 {(unsigned long)__GFP_HARDWALL, "__GFP_HARDWALL"}, \43 {(__force unsigned long)__GFP_HARDWALL, "__GFP_HARDWALL"}, \
44 {(unsigned long)__GFP_THISNODE, "__GFP_THISNODE"}, \44 {(__force unsigned long)__GFP_THISNODE, "__GFP_THISNODE"}, \
45 {(unsigned long)__GFP_RECLAIMABLE, "__GFP_RECLAIMABLE"}, \45 {(__force unsigned long)__GFP_RECLAIMABLE, "__GFP_RECLAIMABLE"}, \
46 {(unsigned long)__GFP_MOVABLE, "__GFP_MOVABLE"}, \46 {(__force unsigned long)__GFP_MOVABLE, "__GFP_MOVABLE"}, \
47 {(unsigned long)__GFP_ACCOUNT, "__GFP_ACCOUNT"}, \47 {(__force unsigned long)__GFP_ACCOUNT, "__GFP_ACCOUNT"}, \
48 {(unsigned long)__GFP_WRITE, "__GFP_WRITE"}, \48 {(__force unsigned long)__GFP_WRITE, "__GFP_WRITE"}, \
49 {(unsigned long)__GFP_RECLAIM, "__GFP_RECLAIM"}, \49 {(__force unsigned long)__GFP_RECLAIM, "__GFP_RECLAIM"}, \
50 {(unsigned long)__GFP_DIRECT_RECLAIM, "__GFP_DIRECT_RECLAIM"},\50 {(__force unsigned long)__GFP_DIRECT_RECLAIM, "__GFP_DIRECT_RECLAIM"},\
51 {(unsigned long)__GFP_KSWAPD_RECLAIM, "__GFP_KSWAPD_RECLAIM"},\51 {(__force unsigned long)__GFP_KSWAPD_RECLAIM, "__GFP_KSWAPD_RECLAIM"},\
52 {(unsigned long)__GFP_ZEROTAGS, "__GFP_ZEROTAGS"} \52 {(__force unsigned long)__GFP_ZEROTAGS, "__GFP_ZEROTAGS"} \
53 53
54#ifdef CONFIG_KASAN_HW_TAGS54#ifdef CONFIG_KASAN_HW_TAGS
55#define __def_gfpflag_names_kasan , \55#define __def_gfpflag_names_kasan , \
56 {(unsigned long)__GFP_SKIP_ZERO, "__GFP_SKIP_ZERO"}, \56 {(__force unsigned long)__GFP_SKIP_ZERO, "__GFP_SKIP_ZERO"}, \
57 {(unsigned long)__GFP_SKIP_KASAN_POISON, "__GFP_SKIP_KASAN_POISON"}, \57 {(__force unsigned long)__GFP_SKIP_KASAN_POISON, "__GFP_SKIP_KASAN_POISON"}, \
58 {(unsigned long)__GFP_SKIP_KASAN_UNPOISON, "__GFP_SKIP_KASAN_UNPOISON"}58 {(__force unsigned long)__GFP_SKIP_KASAN_UNPOISON, "__GFP_SKIP_KASAN_UNPOISON"}
59#else59#else
60#define __def_gfpflag_names_kasan60#define __def_gfpflag_names_kasan
61#endif61#endif
include/trace/events/vmscan.h+8−8
@@ -96,14 +96,14 @@ TRACE_EVENT(mm_vmscan_wakeup_kswapd, · 95 unmodified lines
96 __field( int, nid )96 __field( int, nid )
97 __field( int, zid )97 __field( int, zid )
98 __field( int, order )98 __field( int, order )
99 __field( gfp_t, gfp_flags )99 __field( unsigned long, gfp_flags )
100 ),100 ),
101 101
102 TP_fast_assign(102 TP_fast_assign(
103 __entry->nid = nid;103 __entry->nid = nid;
104 __entry->zid = zid;104 __entry->zid = zid;
105 __entry->order = order;105 __entry->order = order;
106 __entry->gfp_flags = gfp_flags;106 __entry->gfp_flags = (__force unsigned long)gfp_flags;
107 ),107 ),
108 108
109 TP_printk("nid=%d order=%d gfp_flags=%s",109 TP_printk("nid=%d order=%d gfp_flags=%s",
@@ -120,12 +120,12 @@ DECLARE_EVENT_CLASS(mm_vmscan_direct_reclaim_begin_template, · 10 unmodified lines
120 120
121 TP_STRUCT__entry(121 TP_STRUCT__entry(
122 __field( int, order )122 __field( int, order )
123 __field( gfp_t, gfp_flags )123 __field( unsigned long, gfp_flags )
124 ),124 ),
125 125
126 TP_fast_assign(126 TP_fast_assign(
127 __entry->order = order;127 __entry->order = order;
128 __entry->gfp_flags = gfp_flags;128 __entry->gfp_flags = (__force unsigned long)gfp_flags;
129 ),129 ),
130 130
131 TP_printk("order=%d gfp_flags=%s",131 TP_printk("order=%d gfp_flags=%s",
@@ -210,7 +210,7 @@ TRACE_EVENT(mm_shrink_slab_start, · 78 unmodified lines
210 __field(void *, shrink)210 __field(void *, shrink)
211 __field(int, nid)211 __field(int, nid)
212 __field(long, nr_objects_to_shrink)212 __field(long, nr_objects_to_shrink)
213 __field(gfp_t, gfp_flags)213 __field(unsigned long, gfp_flags)
214 __field(unsigned long, cache_items)214 __field(unsigned long, cache_items)
215 __field(unsigned long long, delta)215 __field(unsigned long long, delta)
216 __field(unsigned long, total_scan)216 __field(unsigned long, total_scan)
@@ -222,7 +222,7 @@ TRACE_EVENT(mm_shrink_slab_start, · 5 unmodified lines
222 __entry->shrink = shr->scan_objects;222 __entry->shrink = shr->scan_objects;
223 __entry->nid = sc->nid;223 __entry->nid = sc->nid;
224 __entry->nr_objects_to_shrink = nr_objects_to_shrink;224 __entry->nr_objects_to_shrink = nr_objects_to_shrink;
225 __entry->gfp_flags = sc->gfp_mask;225 __entry->gfp_flags = (__force unsigned long)sc->gfp_mask;
226 __entry->cache_items = cache_items;226 __entry->cache_items = cache_items;
227 __entry->delta = delta;227 __entry->delta = delta;
228 __entry->total_scan = total_scan;228 __entry->total_scan = total_scan;
@@ -446,13 +446,13 @@ TRACE_EVENT(mm_vmscan_node_reclaim_begin, · 217 unmodified lines
446 TP_STRUCT__entry(446 TP_STRUCT__entry(
447 __field(int, nid)447 __field(int, nid)
448 __field(int, order)448 __field(int, order)
449 __field(gfp_t, gfp_flags)449 __field(unsigned long, gfp_flags)
450 ),450 ),
451 451
452 TP_fast_assign(452 TP_fast_assign(
453 __entry->nid = nid;453 __entry->nid = nid;
454 __entry->order = order;454 __entry->order = order;
455 __entry->gfp_flags = gfp_flags;455 __entry->gfp_flags = (__force unsigned long)gfp_flags;
456 ),456 ),
457 457
458 TP_printk("nid=%d order=%d gfp_flags=%s",458 TP_printk("nid=%d order=%d gfp_flags=%s",
mm/compaction.c+1−1
@@ -2569,7 +2569,7 @@ enum compact_result try_to_compact_pages(gfp_t gfp_mask, unsigned int order, · 2568 unmodified lines
2569 unsigned int alloc_flags, const struct alloc_context *ac,2569 unsigned int alloc_flags, const struct alloc_context *ac,
2570 enum compact_priority prio, struct page **capture)2570 enum compact_priority prio, struct page **capture)
2571{2571{
2572 int may_perform_io = gfp_mask & __GFP_IO;2572 int may_perform_io = (__force int)(gfp_mask & __GFP_IO);
2573 struct zoneref *z;2573 struct zoneref *z;
2574 struct zone *zone;2574 struct zone *zone;
2575 enum compact_result rc = COMPACT_SKIPPED;2575 enum compact_result rc = COMPACT_SKIPPED;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t