closures: CLOSURE_CALLBACK() to fix type punning
Control flow integrity is now checking that type signatures match on indirect function calls. That breaks closures, which embed a work_struct in a closure in such a way that a closure_fn may also be used as a workqueue fn by the underlying closure code. So we have to change closure fns to take a work_struct as their argument - but that results in a loss of clarity, as closure fns have different semantics from normal workqueue functions (they run owning a ref on the closure, which must be released with continue_at() or closure_return()). Thus, this patc introduces CLOSURE_CALLBACK() and closure_type() macros as suggested by Kees, to smooth things over a bit. Suggested-by:Kees Cook <keescook@chromium.org> Cc: Coly Li <colyli@suse.de> Signed-off-by:
Kent Overstreet <kent.overstreet@linux.dev>
Showing
- drivers/md/bcache/btree.c 7 additions, 7 deletionsdrivers/md/bcache/btree.c
- drivers/md/bcache/journal.c 10 additions, 10 deletionsdrivers/md/bcache/journal.c
- drivers/md/bcache/movinggc.c 8 additions, 8 deletionsdrivers/md/bcache/movinggc.c
- drivers/md/bcache/request.c 37 additions, 37 deletionsdrivers/md/bcache/request.c
- drivers/md/bcache/request.h 1 addition, 1 deletiondrivers/md/bcache/request.h
- drivers/md/bcache/super.c 20 additions, 20 deletionsdrivers/md/bcache/super.c
- drivers/md/bcache/writeback.c 8 additions, 8 deletionsdrivers/md/bcache/writeback.c
- fs/bcachefs/btree_io.c 3 additions, 4 deletionsfs/bcachefs/btree_io.c
- fs/bcachefs/btree_update_interior.c 2 additions, 2 deletionsfs/bcachefs/btree_update_interior.c
- fs/bcachefs/fs-io-direct.c 4 additions, 4 deletionsfs/bcachefs/fs-io-direct.c
- fs/bcachefs/io_write.c 7 additions, 7 deletionsfs/bcachefs/io_write.c
- fs/bcachefs/io_write.h 1 addition, 2 deletionsfs/bcachefs/io_write.h
- fs/bcachefs/journal_io.c 8 additions, 9 deletionsfs/bcachefs/journal_io.c
- fs/bcachefs/journal_io.h 1 addition, 1 deletionfs/bcachefs/journal_io.h
- include/linux/closure.h 7 additions, 2 deletionsinclude/linux/closure.h
- lib/closure.c 3 additions, 2 deletionslib/closure.c
Loading
Please register or sign in to comment