@@ -1035,7 +1035,7 @@ static int ublk_ch_mmap(struct file *filp, struct vm_area_struct *vma)
1035
1035
}
1036
1036
1037
1037
static void ublk_commit_completion (struct ublk_device * ub ,
1038
- struct ublksrv_io_cmd * ub_cmd )
1038
+ const struct ublksrv_io_cmd * ub_cmd )
1039
1039
{
1040
1040
u32 qid = ub_cmd -> q_id , tag = ub_cmd -> tag ;
1041
1041
struct ublk_queue * ubq = ublk_get_queue (ub , qid );
@@ -1292,7 +1292,7 @@ static inline int ublk_check_cmd_op(u32 cmd_op)
1292
1292
1293
1293
static int __ublk_ch_uring_cmd (struct io_uring_cmd * cmd ,
1294
1294
unsigned int issue_flags ,
1295
- struct ublksrv_io_cmd * ub_cmd )
1295
+ const struct ublksrv_io_cmd * ub_cmd )
1296
1296
{
1297
1297
struct ublk_device * ub = cmd -> file -> private_data ;
1298
1298
struct ublk_queue * ubq ;
@@ -1399,17 +1399,17 @@ static int __ublk_ch_uring_cmd(struct io_uring_cmd *cmd,
1399
1399
1400
1400
static int ublk_ch_uring_cmd (struct io_uring_cmd * cmd , unsigned int issue_flags )
1401
1401
{
1402
- struct ublksrv_io_cmd * ub_src = (struct ublksrv_io_cmd * ) cmd -> cmd ;
1403
- struct ublksrv_io_cmd ub_cmd ;
1404
-
1405
1402
/*
1406
1403
* Not necessary for async retry, but let's keep it simple and always
1407
1404
* copy the values to avoid any potential reuse.
1408
1405
*/
1409
- ub_cmd .q_id = READ_ONCE (ub_src -> q_id );
1410
- ub_cmd .tag = READ_ONCE (ub_src -> tag );
1411
- ub_cmd .result = READ_ONCE (ub_src -> result );
1412
- ub_cmd .addr = READ_ONCE (ub_src -> addr );
1406
+ const struct ublksrv_io_cmd * ub_src = io_uring_sqe_cmd (cmd -> sqe );
1407
+ const struct ublksrv_io_cmd ub_cmd = {
1408
+ .q_id = READ_ONCE (ub_src -> q_id ),
1409
+ .tag = READ_ONCE (ub_src -> tag ),
1410
+ .result = READ_ONCE (ub_src -> result ),
1411
+ .addr = READ_ONCE (ub_src -> addr )
1412
+ };
1413
1413
1414
1414
return __ublk_ch_uring_cmd (cmd , issue_flags , & ub_cmd );
1415
1415
}
@@ -1619,7 +1619,7 @@ static struct ublk_device *ublk_get_device_from_id(int idx)
1619
1619
1620
1620
static int ublk_ctrl_start_dev (struct ublk_device * ub , struct io_uring_cmd * cmd )
1621
1621
{
1622
- struct ublksrv_ctrl_cmd * header = ( struct ublksrv_ctrl_cmd * ) cmd -> cmd ;
1622
+ const struct ublksrv_ctrl_cmd * header = io_uring_sqe_cmd ( cmd -> sqe ) ;
1623
1623
int ublksrv_pid = (int )header -> data [0 ];
1624
1624
struct gendisk * disk ;
1625
1625
int ret = - EINVAL ;
@@ -1682,7 +1682,7 @@ static int ublk_ctrl_start_dev(struct ublk_device *ub, struct io_uring_cmd *cmd)
1682
1682
static int ublk_ctrl_get_queue_affinity (struct ublk_device * ub ,
1683
1683
struct io_uring_cmd * cmd )
1684
1684
{
1685
- struct ublksrv_ctrl_cmd * header = ( struct ublksrv_ctrl_cmd * ) cmd -> cmd ;
1685
+ const struct ublksrv_ctrl_cmd * header = io_uring_sqe_cmd ( cmd -> sqe ) ;
1686
1686
void __user * argp = (void __user * )(unsigned long )header -> addr ;
1687
1687
cpumask_var_t cpumask ;
1688
1688
unsigned long queue ;
@@ -1733,7 +1733,7 @@ static inline void ublk_dump_dev_info(struct ublksrv_ctrl_dev_info *info)
1733
1733
1734
1734
static int ublk_ctrl_add_dev (struct io_uring_cmd * cmd )
1735
1735
{
1736
- struct ublksrv_ctrl_cmd * header = ( struct ublksrv_ctrl_cmd * ) cmd -> cmd ;
1736
+ const struct ublksrv_ctrl_cmd * header = io_uring_sqe_cmd ( cmd -> sqe ) ;
1737
1737
void __user * argp = (void __user * )(unsigned long )header -> addr ;
1738
1738
struct ublksrv_ctrl_dev_info info ;
1739
1739
struct ublk_device * ub ;
@@ -1910,7 +1910,7 @@ static int ublk_ctrl_del_dev(struct ublk_device **p_ub)
1910
1910
1911
1911
static inline void ublk_ctrl_cmd_dump (struct io_uring_cmd * cmd )
1912
1912
{
1913
- struct ublksrv_ctrl_cmd * header = ( struct ublksrv_ctrl_cmd * ) cmd -> cmd ;
1913
+ const struct ublksrv_ctrl_cmd * header = io_uring_sqe_cmd ( cmd -> sqe ) ;
1914
1914
1915
1915
pr_devel ("%s: cmd_op %x, dev id %d qid %d data %llx buf %llx len %u\n" ,
1916
1916
__func__ , cmd -> cmd_op , header -> dev_id , header -> queue_id ,
@@ -1929,7 +1929,7 @@ static int ublk_ctrl_stop_dev(struct ublk_device *ub)
1929
1929
static int ublk_ctrl_get_dev_info (struct ublk_device * ub ,
1930
1930
struct io_uring_cmd * cmd )
1931
1931
{
1932
- struct ublksrv_ctrl_cmd * header = ( struct ublksrv_ctrl_cmd * ) cmd -> cmd ;
1932
+ const struct ublksrv_ctrl_cmd * header = io_uring_sqe_cmd ( cmd -> sqe ) ;
1933
1933
void __user * argp = (void __user * )(unsigned long )header -> addr ;
1934
1934
1935
1935
if (header -> len < sizeof (struct ublksrv_ctrl_dev_info ) || !header -> addr )
@@ -1960,7 +1960,7 @@ static void ublk_ctrl_fill_params_devt(struct ublk_device *ub)
1960
1960
static int ublk_ctrl_get_params (struct ublk_device * ub ,
1961
1961
struct io_uring_cmd * cmd )
1962
1962
{
1963
- struct ublksrv_ctrl_cmd * header = ( struct ublksrv_ctrl_cmd * ) cmd -> cmd ;
1963
+ const struct ublksrv_ctrl_cmd * header = io_uring_sqe_cmd ( cmd -> sqe ) ;
1964
1964
void __user * argp = (void __user * )(unsigned long )header -> addr ;
1965
1965
struct ublk_params_header ph ;
1966
1966
int ret ;
@@ -1991,7 +1991,7 @@ static int ublk_ctrl_get_params(struct ublk_device *ub,
1991
1991
static int ublk_ctrl_set_params (struct ublk_device * ub ,
1992
1992
struct io_uring_cmd * cmd )
1993
1993
{
1994
- struct ublksrv_ctrl_cmd * header = ( struct ublksrv_ctrl_cmd * ) cmd -> cmd ;
1994
+ const struct ublksrv_ctrl_cmd * header = io_uring_sqe_cmd ( cmd -> sqe ) ;
1995
1995
void __user * argp = (void __user * )(unsigned long )header -> addr ;
1996
1996
struct ublk_params_header ph ;
1997
1997
int ret = - EFAULT ;
@@ -2052,7 +2052,7 @@ static void ublk_queue_reinit(struct ublk_device *ub, struct ublk_queue *ubq)
2052
2052
static int ublk_ctrl_start_recovery (struct ublk_device * ub ,
2053
2053
struct io_uring_cmd * cmd )
2054
2054
{
2055
- struct ublksrv_ctrl_cmd * header = ( struct ublksrv_ctrl_cmd * ) cmd -> cmd ;
2055
+ const struct ublksrv_ctrl_cmd * header = io_uring_sqe_cmd ( cmd -> sqe ) ;
2056
2056
int ret = - EINVAL ;
2057
2057
int i ;
2058
2058
@@ -2094,7 +2094,7 @@ static int ublk_ctrl_start_recovery(struct ublk_device *ub,
2094
2094
static int ublk_ctrl_end_recovery (struct ublk_device * ub ,
2095
2095
struct io_uring_cmd * cmd )
2096
2096
{
2097
- struct ublksrv_ctrl_cmd * header = ( struct ublksrv_ctrl_cmd * ) cmd -> cmd ;
2097
+ const struct ublksrv_ctrl_cmd * header = io_uring_sqe_cmd ( cmd -> sqe ) ;
2098
2098
int ublksrv_pid = (int )header -> data [0 ];
2099
2099
int ret = - EINVAL ;
2100
2100
@@ -2161,7 +2161,7 @@ static int ublk_char_dev_permission(struct ublk_device *ub,
2161
2161
static int ublk_ctrl_uring_cmd_permission (struct ublk_device * ub ,
2162
2162
struct io_uring_cmd * cmd )
2163
2163
{
2164
- struct ublksrv_ctrl_cmd * header = (struct ublksrv_ctrl_cmd * )cmd -> cmd ;
2164
+ struct ublksrv_ctrl_cmd * header = (struct ublksrv_ctrl_cmd * )io_uring_sqe_cmd ( cmd -> sqe ) ;
2165
2165
bool unprivileged = ub -> dev_info .flags & UBLK_F_UNPRIVILEGED_DEV ;
2166
2166
void __user * argp = (void __user * )(unsigned long )header -> addr ;
2167
2167
char * dev_path = NULL ;
@@ -2240,7 +2240,7 @@ static int ublk_ctrl_uring_cmd_permission(struct ublk_device *ub,
2240
2240
static int ublk_ctrl_uring_cmd (struct io_uring_cmd * cmd ,
2241
2241
unsigned int issue_flags )
2242
2242
{
2243
- struct ublksrv_ctrl_cmd * header = ( struct ublksrv_ctrl_cmd * ) cmd -> cmd ;
2243
+ const struct ublksrv_ctrl_cmd * header = io_uring_sqe_cmd ( cmd -> sqe ) ;
2244
2244
struct ublk_device * ub = NULL ;
2245
2245
u32 cmd_op = cmd -> cmd_op ;
2246
2246
int ret = - EINVAL ;
0 commit comments