On Thu, Jul 16, 2020 at 01:48:20PM -0700, Dmitry Torokhov wrote:
On Thu, Jul 16, 2020 at 12:14 PM Kees Cook keescook@chromium.org wrote:
On Thu, Jul 16, 2020 at 09:57:18AM +0200, Peter Zijlstra wrote:
On Wed, Jul 15, 2020 at 08:08:44PM -0700, Kees Cook wrote:
Hi,
This is the infrastructure changes to prepare the tasklet API for conversion to passing the tasklet struct as the callback argument instead of an arbitrary unsigned long. The first patch details why this is useful (it's the same rationale as the timer_struct changes from a bit ago: less abuse during memory corruption attacks, more in line with existing ways of doing things in the kernel, save a little space in struct, etc). Notably, the existing tasklet API use is much less messy, so there is less to clean up.
I would _MUCH_ rather see tasklets go the way of the dodo, esp. given that:
drivers/input/keyboard/omap-keypad.c | 2 +- drivers/input/serio/hil_mlc.c | 2 +- drivers/net/wan/farsync.c | 4 +-- drivers/s390/crypto/ap_bus.c | 2 +- drivers/staging/most/dim2/dim2.c | 2 +- drivers/staging/octeon/ethernet-tx.c | 2 +- drivers/tty/vt/keyboard.c | 2 +- drivers/usb/gadget/udc/snps_udc_core.c | 6 ++--- drivers/usb/host/fhci-sched.c | 2 +- include/linux/interrupt.h | 37 ++++++++++++++++++++++---- kernel/backtracetest.c | 2 +- kernel/debug/debug_core.c | 2 +- kernel/irq/resend.c | 2 +- kernel/softirq.c | 18 ++++++++++++- net/atm/pppoatm.c | 2 +- net/iucv/iucv.c | 2 +- sound/drivers/pcsp/pcsp_lib.c | 2 +- 17 files changed, 66 insertions(+), 25 deletions(-)
there appear to be hardly any users left.. Can't we stage an extinction event here instead?
Oh, I wish, but no. That's just the ones using DECLARE_TASKLET. There are hundred(s?) more (see the referenced tree).
Still, do we really need tasklets? Can we substitute timers executing immediately in their place?
If there is a direct replacement, then sure, I'd be happy to do whatever, however it does not look mechanical to me. If there is a mechanical way that will convert these two directories (as an example of various complexities):
drivers/crypto/ccp/ drivers/gpu/drm/i915/gt/
then let's get it documented. But if not, let's write up a paragraph for the deprecated.rst, mark it as deprecated in comments, and modernize the API (which is a mostly mechanical change) to avoid it being a problem for CFI, for memory corruption, and heap space, etc.