Re: Update Linux 2.4 Status/TODO list

From: Arnaldo Carvalho de Melo (acme@conectiva.com.br)
Date: Wed Sep 13 2000 - 06:20:22 EST


Em Wed, Sep 13, 2000 at 01:56:39AM -0400, tytso@mit.edu escreveu:

> 9. To Do
>
> * Check all devices use resources properly (Everyone now has to use
> request_region and check the return since we no longer single
> thread driver inits in all module cases. Also memory regions are
> now requestable and a lot of old drivers dont know this yet. --
> Alan Cox)

I've been doing this for quite a while, there's lots of patches fixing
this still pending integration

> * Tulip hang on rmmod/crashes sometimes
> * Devfs races (mostly done - Al Viro)
> * Fix further NFS races (Al Viro)
> * Test other file systems on write
> * Fix mount failures due to copy_* user mishandling

not necessarily for mount failures, but I've been fixing/cleaning up copy_*_usage

> + Dawson Engler's list of potential kmalloc/kfree bugs

been fixing this as well for quite some time, lots of patches pending integration

And here is my current TODO list, maybe some itens should be merged to this larger
list:

- get rid of check_region, use just request_region checking its return (2.2
  request_region returned void) and now the driver init sequence is not to be
  serialized anymore, so races are possible (look at cardbus/pcihotplug code)
        - check isapnp.c: doesn't release regions on failure

- request_irq needs to be checked

- check all init_etherdev return
  - drivers allocating net_device with init_etherdev doesn't need zeroing it
    (init_etherdev does this for us)
- check all kmalloc, vmaloc, skb_alloc, etcalloc
        - check drivers/char/ip2main.c

- register_netdev has to be checked as well

- release previously successful allocations on failure
  - use forward gotos to release previously successfull allocations

- convert drivers to new PCI API

- remove uneeded historic code
  - checking for NULL on probe routines for net drivers

- proc_register() is dead. Use create_proc_read_entry() instead. (from Al Viro on lkml)

- check proc_*_create result, again, it can fail, and is common (bad) practice
  in most of the kernel sources

- check freeing skbs with kfree instead of kfree_skb

- get rid of panic function in drivers (watchdogs need to use machine_restart
  instead of panic 8) )
  - several char drivers do this happily :(

- get rid of isa_read/write[bwl], use ioremap instead

- sed s/return EWHATEVER/return -EWHATEVER/

- check misc_register return (yes, it can fail, murphy's law applies here as
  well)

- converting cli to spinlocks (look at net/netrom/*.c, net/ipx/*.c, etc)

- get rid of verify_area with copy_*_user get/put_user, only needed if
  using __copy_*_user et al
        - to make sure that copy_to_user et all are checked
                - look at drivers/char/generic_serial.c
                - look at drivers/char/n_tty.c
        - use "return copy_to_user(...) ? -EFAULT : ok_value;"
                - check drivers/char/dz.c wrt return copy*user(...);
                        has to be ... ? -EFAULT : 0;

- prumpf suggested:
         - make sure drivers never read loops_per_sec - it might change under them

         - fix watchdog drivers to use link order rather than explicit initialization
           calls (i810 is particularly broken)

         - get rid of init_module / cleanup_module (softdog in particular)

         - make sure BUG() is used correctly (i.e. if(function()) BUG(); is evil)
                i.e. even when no opping BUG we still have an if

         - get rid of if (p) kfree(p); style constructs - kfree(NULL) is a nop and it
           shortens the code path

- prumpf suggested, rmk agreed

        - get rid of save_flags_cli, use local_irq_save instead

Maybe:
- check drivers/scsi/ips.c for resource leaks (ips_release doesn't seems
  to release all the kmalloc memory it got in ips_detect. (quick look)

=============================================================================================
DONE
=============================================================================================

- get rid of copy_to_user_ret et all (Linus call) (davem)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Sep 15 2000 - 21:00:21 EST