@@ -39,10 +39,10 @@ static_assert(BITS_PER_TYPE(access_mask_t) >= LANDLOCK_NUM_ACCESS_NET);
39
39
static_assert (sizeof (unsigned long ) >= sizeof (access_mask_t ));
40
40
41
41
/* Ruleset access masks. */
42
- typedef u32 access_masks_t ;
43
- /* Makes sure all ruleset access rights can be stored. */
44
- static_assert ( BITS_PER_TYPE ( access_masks_t ) >=
45
- LANDLOCK_NUM_ACCESS_FS + LANDLOCK_NUM_ACCESS_NET ) ;
42
+ struct access_masks {
43
+ access_mask_t fs : LANDLOCK_NUM_ACCESS_FS ;
44
+ access_mask_t net : LANDLOCK_NUM_ACCESS_NET ;
45
+ } ;
46
46
47
47
typedef u16 layer_mask_t ;
48
48
/* Makes sure all layers can be checked. */
@@ -226,7 +226,7 @@ struct landlock_ruleset {
226
226
* layers are set once and never changed for the
227
227
* lifetime of the ruleset.
228
228
*/
229
- access_masks_t access_masks [];
229
+ struct access_masks access_masks [];
230
230
};
231
231
};
232
232
};
@@ -265,8 +265,7 @@ landlock_add_fs_access_mask(struct landlock_ruleset *const ruleset,
265
265
266
266
/* Should already be checked in sys_landlock_create_ruleset(). */
267
267
WARN_ON_ONCE (fs_access_mask != fs_mask );
268
- ruleset -> access_masks [layer_level ] |=
269
- (fs_mask << LANDLOCK_SHIFT_ACCESS_FS );
268
+ ruleset -> access_masks [layer_level ].fs |= fs_mask ;
270
269
}
271
270
272
271
static inline void
@@ -278,17 +277,14 @@ landlock_add_net_access_mask(struct landlock_ruleset *const ruleset,
278
277
279
278
/* Should already be checked in sys_landlock_create_ruleset(). */
280
279
WARN_ON_ONCE (net_access_mask != net_mask );
281
- ruleset -> access_masks [layer_level ] |=
282
- (net_mask << LANDLOCK_SHIFT_ACCESS_NET );
280
+ ruleset -> access_masks [layer_level ].net |= net_mask ;
283
281
}
284
282
285
283
static inline access_mask_t
286
284
landlock_get_raw_fs_access_mask (const struct landlock_ruleset * const ruleset ,
287
285
const u16 layer_level )
288
286
{
289
- return (ruleset -> access_masks [layer_level ] >>
290
- LANDLOCK_SHIFT_ACCESS_FS ) &
291
- LANDLOCK_MASK_ACCESS_FS ;
287
+ return ruleset -> access_masks [layer_level ].fs ;
292
288
}
293
289
294
290
static inline access_mask_t
@@ -304,9 +300,7 @@ static inline access_mask_t
304
300
landlock_get_net_access_mask (const struct landlock_ruleset * const ruleset ,
305
301
const u16 layer_level )
306
302
{
307
- return (ruleset -> access_masks [layer_level ] >>
308
- LANDLOCK_SHIFT_ACCESS_NET ) &
309
- LANDLOCK_MASK_ACCESS_NET ;
303
+ return ruleset -> access_masks [layer_level ].net ;
310
304
}
311
305
312
306
bool landlock_unmask_layers (const struct landlock_rule * const rule ,
0 commit comments