@@ -2002,24 +2002,6 @@ COMPAT_SYSCALL_DEFINE3(io_submit, compat_aio_context_t, ctx_id,
2002
2002
}
2003
2003
#endif
2004
2004
2005
- /* lookup_kiocb
2006
- * Finds a given iocb for cancellation.
2007
- */
2008
- static struct aio_kiocb *
2009
- lookup_kiocb (struct kioctx * ctx , struct iocb __user * iocb )
2010
- {
2011
- struct aio_kiocb * kiocb ;
2012
-
2013
- assert_spin_locked (& ctx -> ctx_lock );
2014
-
2015
- /* TODO: use a hash or array, this sucks. */
2016
- list_for_each_entry (kiocb , & ctx -> active_reqs , ki_list ) {
2017
- if (kiocb -> ki_user_iocb == iocb )
2018
- return kiocb ;
2019
- }
2020
- return NULL ;
2021
- }
2022
-
2023
2005
/* sys_io_cancel:
2024
2006
* Attempts to cancel an iocb previously passed to io_submit. If
2025
2007
* the operation is successfully cancelled, the resulting event is
@@ -2048,10 +2030,13 @@ SYSCALL_DEFINE3(io_cancel, aio_context_t, ctx_id, struct iocb __user *, iocb,
2048
2030
return - EINVAL ;
2049
2031
2050
2032
spin_lock_irq (& ctx -> ctx_lock );
2051
- kiocb = lookup_kiocb (ctx , iocb );
2052
- if (kiocb ) {
2053
- ret = kiocb -> ki_cancel (& kiocb -> rw );
2054
- list_del_init (& kiocb -> ki_list );
2033
+ /* TODO: use a hash or array, this sucks. */
2034
+ list_for_each_entry (kiocb , & ctx -> active_reqs , ki_list ) {
2035
+ if (kiocb -> ki_user_iocb == iocb ) {
2036
+ ret = kiocb -> ki_cancel (& kiocb -> rw );
2037
+ list_del_init (& kiocb -> ki_list );
2038
+ break ;
2039
+ }
2055
2040
}
2056
2041
spin_unlock_irq (& ctx -> ctx_lock );
2057
2042
0 commit comments