github.com/google/syzkaller@v0.0.0-20251211124644-a066d2bc4b02/sys/linux/dev_block.txt (about) 1 # Copyright 2018 syzkaller project authors. All rights reserved. 2 # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. 3 4 include <uapi/linux/fs.h> 5 include <uapi/linux/blktrace_api.h> 6 include <uapi/linux/blkzoned.h> 7 include <uapi/linux/pr.h> 8 include <uapi/linux/hdreg.h> 9 include <uapi/linux/blkpg.h> 10 include <linux/blk-crypto.h> 11 12 resource fd_block_trace[fd] 13 resource fd_block[fd_block_trace] 14 15 openat$nullb(fd const[AT_FDCWD], file ptr[in, string["/dev/nullb0"]], flags flags[open_flags], mode const[0]) fd_block 16 openat$rnullb(fd const[AT_FDCWD], file ptr[in, string["/dev/rnullb0"]], flags flags[open_flags], mode const[0]) fd_block 17 openat$md(fd const[AT_FDCWD], file ptr[in, string["/dev/md0"]], flags flags[open_flags], mode const[0]) fd_block 18 openat$pmem0(fd const[AT_FDCWD], file ptr[in, string["/dev/pmem0"]], flags flags[open_flags], mode const[0]) fd_block 19 20 ioctl$BLKTRACESETUP(fd fd_block_trace, cmd const[BLKTRACESETUP], arg ptr[inout, blk_user_trace_setup]) 21 ioctl$BLKTRACESTART(fd fd_block_trace, cmd const[BLKTRACESTART], arg const[0]) 22 ioctl$BLKTRACESTOP(fd fd_block_trace, cmd const[BLKTRACESTOP], arg const[0]) 23 ioctl$BLKTRACETEARDOWN(fd fd_block_trace, cmd const[BLKTRACETEARDOWN], arg const[0]) 24 25 ioctl$BLKFLSBUF(fd fd_block, cmd const[BLKFLSBUF], arg ptr[in, intptr]) 26 ioctl$BLKROSET(fd fd_block, cmd const[BLKROSET], arg ptr[in, intptr]) 27 ioctl$BLKDISCARD(fd fd_block, cmd const[BLKDISCARD], arg ptr[in, intptr]) 28 ioctl$BLKSECDISCARD(fd fd_block, cmd const[BLKSECDISCARD], arg ptr[in, intptr]) 29 ioctl$BLKDISCARDZEROES(fd fd_block, cmd const[BLKDISCARDZEROES], arg ptr[out, intptr]) 30 ioctl$BLKZEROOUT(fd fd_block, cmd const[BLKZEROOUT], arg ptr[in, blk_zone_range]) 31 ioctl$BLKRAGET(fd fd_block, cmd const[BLKRAGET], arg ptr[out, intptr]) 32 ioctl$BLKFRAGET(fd fd_block, cmd const[BLKFRAGET], arg ptr[out, intptr]) 33 ioctl$BLKROGET(fd fd_block, cmd const[BLKROGET], arg ptr[out, intptr]) 34 ioctl$BLKBSZGET(fd fd_block, cmd const[BLKBSZGET], arg ptr[out, intptr]) 35 ioctl$BLKSSZGET(fd fd_block, cmd const[BLKSSZGET], arg ptr[out, intptr]) 36 ioctl$BLKPBSZGET(fd fd_block, cmd const[BLKPBSZGET], arg ptr[out, intptr]) 37 ioctl$BLKIOMIN(fd fd_block, cmd const[BLKIOMIN], arg ptr[out, intptr]) 38 ioctl$BLKIOOPT(fd fd_block, cmd const[BLKIOOPT], arg ptr[out, intptr]) 39 ioctl$BLKALIGNOFF(fd fd_block, cmd const[BLKALIGNOFF], arg ptr[out, intptr]) 40 ioctl$BLKSECTGET(fd fd_block, cmd const[BLKSECTGET], arg ptr[out, intptr]) 41 ioctl$BLKROTATIONAL(fd fd_block, cmd const[BLKROTATIONAL], arg ptr[out, intptr]) 42 ioctl$BLKRASET(fd fd_block, cmd const[BLKRASET], arg ptr[in, intptr]) 43 ioctl$BLKFRASET(fd fd_block, cmd const[BLKFRASET], arg ptr[in, intptr]) 44 ioctl$BLKBSZSET(fd fd_block, cmd const[BLKBSZSET], arg ptr[in, intptr]) 45 ioctl$BLKPG(fd fd_block, cmd const[BLKPG], arg ptr[in, blkpg_ioctl_arg]) 46 ioctl$BLKRRPART(fd fd_block, cmd const[BLKRRPART], arg const[0]) 47 ioctl$BLKGETSIZE(fd fd_block, cmd const[BLKGETSIZE], arg ptr[out, intptr]) 48 ioctl$BLKGETSIZE64(fd fd_block, cmd const[BLKGETSIZE64], arg ptr[out, int64]) 49 ioctl$BLKGETDISKSEQ(fd fd_block, cmd const[BLKGETDISKSEQ], arg ptr[out, int64]) 50 51 # TODO: To properly explore zones-related ioctls, figure out how to setup zoned devices. 52 ioctl$BLKREPORTZONE(fd fd_block, cmd const[BLKREPORTZONE], arg ptr[inout, blk_zone_report]) 53 ioctl$BLKRESETZONE(fd fd_block, cmd const[BLKRESETZONE], arg ptr[in, blk_zone_range]) 54 ioctl$BLKOPENZONE(fd fd_block, cmd const[BLKOPENZONE], arg ptr[in, blk_zone_range]) 55 ioctl$BLKCLOSEZONE(fd fd_block, cmd const[BLKCLOSEZONE], arg ptr[in, blk_zone_range]) 56 ioctl$BLKFINISHZONE(fd fd_block, cmd const[BLKFINISHZONE], arg ptr[in, blk_zone_range]) 57 ioctl$BLKGETZONESZ(fd fd_block, cmd const[BLKGETZONESZ], arg ptr[in, int32]) 58 ioctl$BLKGETNRZONES(fd fd_block, cmd const[BLKGETNRZONES], arg ptr[in, int32]) 59 60 # TODO: These calls may fail early on current kernel testing setups due to 61 # uninitialized blk_crypto_profile involved in related device drivers. 62 ioctl$BLKCRYPTOIMPORTKEY(fd fd_block, cmd const[BLKCRYPTOIMPORTKEY], arg ptr[inout, blk_crypto_import_key_arg]) 63 ioctl$BLKCRYPTOGENERATEKEY(fd fd_block, cmd const[BLKCRYPTOGENERATEKEY], arg ptr[inout, blk_crypto_generate_key_arg]) 64 ioctl$BLKCRYPTOPREPAREKEY(fd fd_block, cmd const[BLKCRYPTOPREPAREKEY], arg ptr[inout, blk_crypto_prepare_key_arg]) 65 66 ioctl$HDIO_GETGEO(fd fd_block, cmd const[HDIO_GETGEO], arg ptr[out, hd_geometry]) 67 68 ioctl$IOC_PR_REGISTER(fd fd_block, cmd const[IOC_PR_REGISTER], arg ptr[in, pr_registration]) 69 ioctl$IOC_PR_RESERVE(fd fd_block, cmd const[IOC_PR_RESERVE], arg ptr[in, pr_reservation]) 70 ioctl$IOC_PR_RELEASE(fd fd_block, cmd const[IOC_PR_RELEASE], arg ptr[in, pr_reservation]) 71 ioctl$IOC_PR_PREEMPT(fd fd_block, cmd const[IOC_PR_PREEMPT], arg ptr[in, pr_preempt]) 72 ioctl$IOC_PR_PREEMPT_ABORT(fd fd_block, cmd const[IOC_PR_PREEMPT_ABORT], arg ptr[in, pr_preempt]) 73 ioctl$IOC_PR_CLEAR(fd fd_block, cmd const[IOC_PR_CLEAR], arg ptr[in, pr_clear]) 74 75 blk_zone_report { 76 sector int64 77 nr_zones len[zones, int32] 78 reserved const[0, int32] 79 zones array[blk_zone] 80 } [packed] 81 82 blk_zone { 83 start int64 84 len int64 85 wp int64 86 type int8 87 cond int8 88 non_seq int8 89 reset int8 90 resv array[const[0, int8], 4] 91 capacity int64 92 reserved array[const[0, int8], 24] 93 } 94 95 blk_zone_range { 96 sector int64 97 nr_sectors int64 98 } 99 100 hd_geometry { 101 heads int8 102 sectors int8 103 cylinders int16 104 start intptr 105 } 106 107 blkpg_ioctl_arg { 108 op flags[blkpg_ioctl_op, int32] 109 flags const[0, int32] 110 datalen bytesize[data, int32] 111 data ptr[in, blkpg_partition] 112 } 113 114 blkpg_partition { 115 start int64 116 length int64 117 pno int32[0:20] 118 devname array[const[0, int8], BLKPG_DEVNAMELTH] 119 volname array[const[0, int8], BLKPG_VOLNAMELTH] 120 } 121 122 blkpg_ioctl_op = BLKPG_ADD_PARTITION, BLKPG_DEL_PARTITION, BLKPG_RESIZE_PARTITION 123 124 blk_user_trace_setup { 125 name array[const[0, int8], BLKTRACE_BDEV_SIZE] 126 act_mask int16 127 buf_size int32 128 buf_nr int32 129 start_lba int64 130 end_lba int64 131 pid pid 132 } 133 134 blk_crypto_import_key_arg { 135 raw_key_ptr ptr[in, array[int8, 16:BLK_CRYPTO_MAX_RAW_KEY_SIZE]] 136 raw_key_size len[raw_key_ptr, int64] 137 lt_key_ptr ptr[out, array[int8, 1:BLK_CRYPTO_MAX_HW_WRAPPED_KEY_SIZE]] 138 lt_key_size len[lt_key_ptr, int64] 139 reserved array[const[0, int64], 4] 140 } 141 142 blk_crypto_generate_key_arg { 143 lt_key_ptr ptr[out, array[int8, 1:BLK_CRYPTO_MAX_HW_WRAPPED_KEY_SIZE]] 144 lt_key_size len[lt_key_ptr, int64] 145 reserved array[const[0, int64], 4] 146 } 147 148 blk_crypto_prepare_key_arg { 149 lt_key_ptr ptr[in, array[int8, 1:BLK_CRYPTO_MAX_HW_WRAPPED_KEY_SIZE]] 150 lt_key_size len[lt_key_ptr, int64] 151 eph_key_ptr ptr[out, array[int8, 1:BLK_CRYPTO_MAX_HW_WRAPPED_KEY_SIZE]] 152 eph_key_size len[eph_key_ptr, int64] 153 reserved array[const[0, int64], 4] 154 } 155 156 pr_registration { 157 old_key int64 158 new_key int64 159 flags bool32 160 pad const[0, int32] 161 } 162 163 pr_reservation { 164 key int64 165 type int32 166 flags bool32 167 } 168 169 pr_preempt { 170 old_key int64 171 new_key int64 172 type int32 173 flags int32 174 } 175 176 pr_clear { 177 key int64 178 flags const[0, int32] 179 pad const[0, int32] 180 }