@@ -25,10 +25,6 @@ static int copy_query_item(void *query_hdr, size_t query_sz,
25
25
query_sz ))
26
26
return - EFAULT ;
27
27
28
- if (!access_ok (u64_to_user_ptr (query_item -> data_ptr ),
29
- total_length ))
30
- return - EFAULT ;
31
-
32
28
return 0 ;
33
29
}
34
30
@@ -72,20 +68,20 @@ static int query_topology_info(struct drm_i915_private *dev_priv,
72
68
topo .eu_offset = slice_length + subslice_length ;
73
69
topo .eu_stride = sseu -> eu_stride ;
74
70
75
- if (__copy_to_user (u64_to_user_ptr (query_item -> data_ptr ),
71
+ if (copy_to_user (u64_to_user_ptr (query_item -> data_ptr ),
76
72
& topo , sizeof (topo )))
77
73
return - EFAULT ;
78
74
79
- if (__copy_to_user (u64_to_user_ptr (query_item -> data_ptr + sizeof (topo )),
75
+ if (copy_to_user (u64_to_user_ptr (query_item -> data_ptr + sizeof (topo )),
80
76
& sseu -> slice_mask , slice_length ))
81
77
return - EFAULT ;
82
78
83
- if (__copy_to_user (u64_to_user_ptr (query_item -> data_ptr +
79
+ if (copy_to_user (u64_to_user_ptr (query_item -> data_ptr +
84
80
sizeof (topo ) + slice_length ),
85
81
sseu -> subslice_mask , subslice_length ))
86
82
return - EFAULT ;
87
83
88
- if (__copy_to_user (u64_to_user_ptr (query_item -> data_ptr +
84
+ if (copy_to_user (u64_to_user_ptr (query_item -> data_ptr +
89
85
sizeof (topo ) +
90
86
slice_length + subslice_length ),
91
87
sseu -> eu_mask , eu_length ))
@@ -131,14 +127,14 @@ query_engine_info(struct drm_i915_private *i915,
131
127
info .engine .engine_instance = engine -> uabi_instance ;
132
128
info .capabilities = engine -> uabi_capabilities ;
133
129
134
- if (__copy_to_user (info_ptr , & info , sizeof (info )))
130
+ if (copy_to_user (info_ptr , & info , sizeof (info )))
135
131
return - EFAULT ;
136
132
137
133
query .num_engines ++ ;
138
134
info_ptr ++ ;
139
135
}
140
136
141
- if (__copy_to_user (query_ptr , & query , sizeof (query )))
137
+ if (copy_to_user (query_ptr , & query , sizeof (query )))
142
138
return - EFAULT ;
143
139
144
140
return len ;
@@ -158,10 +154,6 @@ static int can_copy_perf_config_registers_or_number(u32 user_n_regs,
158
154
if (user_n_regs < kernel_n_regs )
159
155
return - EINVAL ;
160
156
161
- if (!access_ok (u64_to_user_ptr (user_regs_ptr ),
162
- 2 * sizeof (u32 ) * kernel_n_regs ))
163
- return - EFAULT ;
164
-
165
157
return 0 ;
166
158
}
167
159
@@ -170,6 +162,7 @@ static int copy_perf_config_registers_or_number(const struct i915_oa_reg *kernel
170
162
u64 user_regs_ptr ,
171
163
u32 * user_n_regs )
172
164
{
165
+ u32 __user * p = u64_to_user_ptr (user_regs_ptr );
173
166
u32 r ;
174
167
175
168
if (* user_n_regs == 0 ) {
@@ -179,25 +172,19 @@ static int copy_perf_config_registers_or_number(const struct i915_oa_reg *kernel
179
172
180
173
* user_n_regs = kernel_n_regs ;
181
174
182
- for (r = 0 ; r < kernel_n_regs ; r ++ ) {
183
- u32 __user * user_reg_ptr =
184
- u64_to_user_ptr (user_regs_ptr + sizeof (u32 ) * r * 2 );
185
- u32 __user * user_val_ptr =
186
- u64_to_user_ptr (user_regs_ptr + sizeof (u32 ) * r * 2 +
187
- sizeof (u32 ));
188
- int ret ;
189
-
190
- ret = __put_user (i915_mmio_reg_offset (kernel_regs [r ].addr ),
191
- user_reg_ptr );
192
- if (ret )
193
- return - EFAULT ;
175
+ if (!user_write_access_begin (p , 2 * sizeof (u32 ) * kernel_n_regs ))
176
+ return - EFAULT ;
194
177
195
- ret = __put_user (kernel_regs [r ].value , user_val_ptr );
196
- if (ret )
197
- return - EFAULT ;
178
+ for (r = 0 ; r < kernel_n_regs ; r ++ , p += 2 ) {
179
+ unsafe_put_user (i915_mmio_reg_offset (kernel_regs [r ].addr ),
180
+ p , Efault );
181
+ unsafe_put_user (kernel_regs [r ].value , p + 1 , Efault );
198
182
}
199
-
183
+ user_write_access_end ();
200
184
return 0 ;
185
+ Efault :
186
+ user_write_access_end ();
187
+ return - EFAULT ;
201
188
}
202
189
203
190
static int query_perf_config_data (struct drm_i915_private * i915 ,
@@ -233,10 +220,7 @@ static int query_perf_config_data(struct drm_i915_private *i915,
233
220
return - EINVAL ;
234
221
}
235
222
236
- if (!access_ok (user_query_config_ptr , total_size ))
237
- return - EFAULT ;
238
-
239
- if (__get_user (flags , & user_query_config_ptr -> flags ))
223
+ if (get_user (flags , & user_query_config_ptr -> flags ))
240
224
return - EFAULT ;
241
225
242
226
if (flags != 0 )
@@ -249,7 +233,7 @@ static int query_perf_config_data(struct drm_i915_private *i915,
249
233
BUILD_BUG_ON (sizeof (user_query_config_ptr -> uuid ) >= sizeof (uuid ));
250
234
251
235
memset (& uuid , 0 , sizeof (uuid ));
252
- if (__copy_from_user (uuid , user_query_config_ptr -> uuid ,
236
+ if (copy_from_user (uuid , user_query_config_ptr -> uuid ,
253
237
sizeof (user_query_config_ptr -> uuid )))
254
238
return - EFAULT ;
255
239
@@ -263,16 +247,15 @@ static int query_perf_config_data(struct drm_i915_private *i915,
263
247
}
264
248
rcu_read_unlock ();
265
249
} else {
266
- if (__get_user (config_id , & user_query_config_ptr -> config ))
250
+ if (get_user (config_id , & user_query_config_ptr -> config ))
267
251
return - EFAULT ;
268
252
269
253
oa_config = i915_perf_get_oa_config (perf , config_id );
270
254
}
271
255
if (!oa_config )
272
256
return - ENOENT ;
273
257
274
- if (__copy_from_user (& user_config , user_config_ptr ,
275
- sizeof (user_config ))) {
258
+ if (copy_from_user (& user_config , user_config_ptr , sizeof (user_config ))) {
276
259
ret = - EFAULT ;
277
260
goto out ;
278
261
}
@@ -318,8 +301,7 @@ static int query_perf_config_data(struct drm_i915_private *i915,
318
301
319
302
memcpy (user_config .uuid , oa_config -> uuid , sizeof (user_config .uuid ));
320
303
321
- if (__copy_to_user (user_config_ptr , & user_config ,
322
- sizeof (user_config ))) {
304
+ if (copy_to_user (user_config_ptr , & user_config , sizeof (user_config ))) {
323
305
ret = - EFAULT ;
324
306
goto out ;
325
307
}
0 commit comments