@@ -25,10 +25,6 @@ static int copy_query_item(void *query_hdr, size_t query_sz,
2525 query_sz ))
2626 return - EFAULT ;
2727
28- if (!access_ok (u64_to_user_ptr (query_item -> data_ptr ),
29- total_length ))
30- return - EFAULT ;
31-
3228 return 0 ;
3329}
3430
@@ -72,20 +68,20 @@ static int query_topology_info(struct drm_i915_private *dev_priv,
7268 topo .eu_offset = slice_length + subslice_length ;
7369 topo .eu_stride = sseu -> eu_stride ;
7470
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 ),
7672 & topo , sizeof (topo )))
7773 return - EFAULT ;
7874
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 )),
8076 & sseu -> slice_mask , slice_length ))
8177 return - EFAULT ;
8278
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 +
8480 sizeof (topo ) + slice_length ),
8581 sseu -> subslice_mask , subslice_length ))
8682 return - EFAULT ;
8783
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 +
8985 sizeof (topo ) +
9086 slice_length + subslice_length ),
9187 sseu -> eu_mask , eu_length ))
@@ -131,14 +127,14 @@ query_engine_info(struct drm_i915_private *i915,
131127 info .engine .engine_instance = engine -> uabi_instance ;
132128 info .capabilities = engine -> uabi_capabilities ;
133129
134- if (__copy_to_user (info_ptr , & info , sizeof (info )))
130+ if (copy_to_user (info_ptr , & info , sizeof (info )))
135131 return - EFAULT ;
136132
137133 query .num_engines ++ ;
138134 info_ptr ++ ;
139135 }
140136
141- if (__copy_to_user (query_ptr , & query , sizeof (query )))
137+ if (copy_to_user (query_ptr , & query , sizeof (query )))
142138 return - EFAULT ;
143139
144140 return len ;
@@ -158,10 +154,6 @@ static int can_copy_perf_config_registers_or_number(u32 user_n_regs,
158154 if (user_n_regs < kernel_n_regs )
159155 return - EINVAL ;
160156
161- if (!access_ok (u64_to_user_ptr (user_regs_ptr ),
162- 2 * sizeof (u32 ) * kernel_n_regs ))
163- return - EFAULT ;
164-
165157 return 0 ;
166158}
167159
@@ -170,6 +162,7 @@ static int copy_perf_config_registers_or_number(const struct i915_oa_reg *kernel
170162 u64 user_regs_ptr ,
171163 u32 * user_n_regs )
172164{
165+ u32 __user * p = u64_to_user_ptr (user_regs_ptr );
173166 u32 r ;
174167
175168 if (* user_n_regs == 0 ) {
@@ -179,25 +172,19 @@ static int copy_perf_config_registers_or_number(const struct i915_oa_reg *kernel
179172
180173 * user_n_regs = kernel_n_regs ;
181174
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 ;
194177
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 );
198182 }
199-
183+ user_write_access_end ();
200184 return 0 ;
185+ Efault :
186+ user_write_access_end ();
187+ return - EFAULT ;
201188}
202189
203190static 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,
233220 return - EINVAL ;
234221 }
235222
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 ))
240224 return - EFAULT ;
241225
242226 if (flags != 0 )
@@ -249,7 +233,7 @@ static int query_perf_config_data(struct drm_i915_private *i915,
249233 BUILD_BUG_ON (sizeof (user_query_config_ptr -> uuid ) >= sizeof (uuid ));
250234
251235 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 ,
253237 sizeof (user_query_config_ptr -> uuid )))
254238 return - EFAULT ;
255239
@@ -263,16 +247,15 @@ static int query_perf_config_data(struct drm_i915_private *i915,
263247 }
264248 rcu_read_unlock ();
265249 } else {
266- if (__get_user (config_id , & user_query_config_ptr -> config ))
250+ if (get_user (config_id , & user_query_config_ptr -> config ))
267251 return - EFAULT ;
268252
269253 oa_config = i915_perf_get_oa_config (perf , config_id );
270254 }
271255 if (!oa_config )
272256 return - ENOENT ;
273257
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 ))) {
276259 ret = - EFAULT ;
277260 goto out ;
278261 }
@@ -318,8 +301,7 @@ static int query_perf_config_data(struct drm_i915_private *i915,
318301
319302 memcpy (user_config .uuid , oa_config -> uuid , sizeof (user_config .uuid ));
320303
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 ))) {
323305 ret = - EFAULT ;
324306 goto out ;
325307 }
0 commit comments