Commit 52b3307
drm/exynos: vidi: use ctx->lock to protect struct vidi_context member variables related to memory alloc/free
Exynos Virtual Display driver performs memory alloc/free operations
without lock protection, which easily causes concurrency problem.
For example, use-after-free can occur in race scenario like this:
```
CPU0 CPU1 CPU2
---- ---- ----
vidi_connection_ioctl()
if (vidi->connection) // true
drm_edid = drm_edid_alloc(); // alloc drm_edid
...
ctx->raw_edid = drm_edid;
...
drm_mode_getconnector()
drm_helper_probe_single_connector_modes()
vidi_get_modes()
if (ctx->raw_edid) // true
drm_edid_dup(ctx->raw_edid);
if (!drm_edid) // false
...
vidi_connection_ioctl()
if (vidi->connection) // false
drm_edid_free(ctx->raw_edid); // free drm_edid
...
drm_edid_alloc(drm_edid->edid)
kmemdup(edid); // UAF!!
...
```
To prevent these vulns, at least in vidi_context, member variables related
to memory alloc/free should be protected with ctx->lock.
Cc: <[email protected]>
Signed-off-by: Jeongjun Park <[email protected]>
Signed-off-by: Inki Dae <[email protected]>1 parent d4c98c0 commit 52b3307
1 file changed
Lines changed: 32 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
187 | 187 | | |
188 | 188 | | |
189 | 189 | | |
190 | | - | |
| 190 | + | |
191 | 191 | | |
192 | | - | |
| 192 | + | |
193 | 193 | | |
194 | 194 | | |
195 | | - | |
196 | | - | |
| 195 | + | |
197 | 196 | | |
198 | 197 | | |
| 198 | + | |
| 199 | + | |
199 | 200 | | |
200 | 201 | | |
201 | 202 | | |
202 | 203 | | |
203 | 204 | | |
204 | 205 | | |
205 | | - | |
| 206 | + | |
| 207 | + | |
206 | 208 | | |
207 | 209 | | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
208 | 213 | | |
209 | 214 | | |
210 | 215 | | |
211 | 216 | | |
212 | 217 | | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
213 | 221 | | |
214 | 222 | | |
215 | 223 | | |
| |||
244 | 252 | | |
245 | 253 | | |
246 | 254 | | |
| 255 | + | |
247 | 256 | | |
| 257 | + | |
248 | 258 | | |
249 | 259 | | |
250 | 260 | | |
251 | 261 | | |
| 262 | + | |
252 | 263 | | |
253 | 264 | | |
254 | 265 | | |
| |||
282 | 293 | | |
283 | 294 | | |
284 | 295 | | |
| 296 | + | |
285 | 297 | | |
| 298 | + | |
286 | 299 | | |
287 | 300 | | |
| 301 | + | |
288 | 302 | | |
289 | 303 | | |
| 304 | + | |
290 | 305 | | |
291 | 306 | | |
| 307 | + | |
292 | 308 | | |
| 309 | + | |
| 310 | + | |
293 | 311 | | |
294 | 312 | | |
295 | 313 | | |
| |||
304 | 322 | | |
305 | 323 | | |
306 | 324 | | |
307 | | - | |
| 325 | + | |
308 | 326 | | |
309 | 327 | | |
310 | 328 | | |
| |||
327 | 345 | | |
328 | 346 | | |
329 | 347 | | |
| 348 | + | |
| 349 | + | |
330 | 350 | | |
331 | 351 | | |
332 | 352 | | |
333 | 353 | | |
334 | 354 | | |
| 355 | + | |
| 356 | + | |
335 | 357 | | |
336 | 358 | | |
337 | 359 | | |
| |||
483 | 505 | | |
484 | 506 | | |
485 | 507 | | |
| 508 | + | |
| 509 | + | |
486 | 510 | | |
487 | 511 | | |
488 | 512 | | |
| 513 | + | |
| 514 | + | |
489 | 515 | | |
490 | 516 | | |
491 | 517 | | |
| |||
0 commit comments