Changeset f2cb80a in mainline for kernel/generic/src/ddi/ddi.c
- Timestamp:
- 2024-02-23T17:57:23Z (11 months ago)
- Children:
- 192019f
- Parents:
- 86f862c (diff), 90ba06c (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - git-author:
- boba-buba <120932204+boba-buba@…> (2024-02-23 17:57:23)
- git-committer:
- GitHub <noreply@…> (2024-02-23 17:57:23)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/ddi/ddi.c
r86f862c rf2cb80a 336 336 return EPERM; 337 337 338 irq_spinlock_lock(&tasks_lock, true);339 340 338 task_t *task = task_find_by_id(id); 341 339 342 if ((!task) || (!container_check(CONTAINER, task->container))) { 343 /* 344 * There is no task with the specified ID 345 * or the task belongs to a different security 346 * context. 347 */ 348 irq_spinlock_unlock(&tasks_lock, true); 340 if (!task) 349 341 return ENOENT; 350 } 351 352 /* Lock the task and release the lock protecting tasks dictionary. */ 353 irq_spinlock_exchange(&tasks_lock, &task->lock); 354 errno_t rc = ddi_iospace_enable_arch(task, ioaddr, size); 342 343 errno_t rc = ENOENT; 344 345 irq_spinlock_lock(&task->lock, true); 346 347 /* Check that the task belongs to the correct security context. */ 348 if (container_check(CONTAINER, task->container)) 349 rc = ddi_iospace_enable_arch(task, ioaddr, size); 350 355 351 irq_spinlock_unlock(&task->lock, true); 356 352 task_release(task); 357 353 return rc; 358 354 } … … 377 373 return EPERM; 378 374 379 irq_spinlock_lock(&tasks_lock, true);380 381 375 task_t *task = task_find_by_id(id); 382 376 383 if ((!task) || (!container_check(CONTAINER, task->container))) { 384 /* 385 * There is no task with the specified ID 386 * or the task belongs to a different security 387 * context. 388 */ 389 irq_spinlock_unlock(&tasks_lock, true); 377 if (!task) 390 378 return ENOENT; 391 } 392 393 /* Lock the task and release the lock protecting tasks dictionary. */ 394 irq_spinlock_exchange(&tasks_lock, &task->lock); 395 errno_t rc = ddi_iospace_disable_arch(task, ioaddr, size); 379 380 errno_t rc = ENOENT; 381 382 irq_spinlock_lock(&task->lock, true); 383 384 /* Check that the task belongs to the correct security context. */ 385 if (container_check(CONTAINER, task->container)) 386 rc = ddi_iospace_disable_arch(task, ioaddr, size); 387 396 388 irq_spinlock_unlock(&task->lock, true); 397 389 task_release(task); 398 390 return rc; 399 391 }
Note:
See TracChangeset
for help on using the changeset viewer.