summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--arch/alpha/kernel/Makefile4
-rw-r--r--arch/alpha/kernel/alpha_ksyms.c3
-rw-r--r--arch/alpha/kernel/irq.c2
-rw-r--r--arch/alpha/kernel/osf_sys.c2
-rw-r--r--arch/alpha/kernel/pci-noop.c104
-rw-r--r--arch/alpha/kernel/process.c2
-rw-r--r--arch/alpha/kernel/ptrace.c2
-rw-r--r--arch/alpha/kernel/setup.c2
-rw-r--r--arch/alpha/kernel/smc37c669.c2
-rw-r--r--arch/alpha/kernel/smc37c93x.c2
-rw-r--r--arch/arm/config.in2
-rw-r--r--arch/arm/kernel/dma-rpc.c2
-rw-r--r--arch/arm/kernel/dma.c2
-rw-r--r--arch/arm/kernel/ecard.c2
-rw-r--r--arch/arm/kernel/irq.c2
-rw-r--r--arch/arm/kernel/process.c2
-rw-r--r--arch/arm/kernel/sys_arm.c2
-rw-r--r--arch/i386/defconfig6
-rw-r--r--arch/i386/kernel/apm.c2
-rw-r--r--arch/i386/kernel/i8259.c2
-rw-r--r--arch/i386/kernel/io_apic.c11
-rw-r--r--arch/i386/kernel/irq.c3
-rw-r--r--arch/i386/kernel/microcode.c2
-rw-r--r--arch/i386/kernel/mtrr.c2
-rw-r--r--arch/i386/kernel/pci-irq.c2
-rw-r--r--arch/i386/kernel/process.c2
-rw-r--r--arch/i386/kernel/setup.c2
-rw-r--r--arch/i386/kernel/smpboot.c1
-rw-r--r--arch/i386/kernel/traps.c5
-rw-r--r--arch/i386/kernel/visws_apic.c2
-rw-r--r--arch/ia64/ia32/sys_ia32.c2
-rw-r--r--arch/ia64/kernel/irq.c2
-rw-r--r--arch/ia64/kernel/irq_ia64.c2
-rw-r--r--arch/ia64/kernel/pci.c2
-rw-r--r--arch/m68k/atari/hades-pci.c2
-rw-r--r--arch/m68k/atari/stram.c2
-rw-r--r--arch/m68k/bvme6000/rtc.c2
-rw-r--r--arch/m68k/kernel/bios32.c2
-rw-r--r--arch/m68k/kernel/process.c2
-rw-r--r--arch/m68k/mac/misc.c2
-rw-r--r--arch/m68k/mm/kmap.c2
-rw-r--r--arch/m68k/mm/memory.c2
-rw-r--r--arch/m68k/mvme16x/rtc.c2
-rw-r--r--arch/mips/baget/irq.c2
-rw-r--r--arch/mips/baget/vacserial.c2
-rw-r--r--arch/mips/dec/irq.c2
-rw-r--r--arch/mips/kernel/irixelf.c2
-rw-r--r--arch/mips/kernel/irq.c2
-rw-r--r--arch/mips/kernel/process.c2
-rw-r--r--arch/mips/kernel/setup.c2
-rw-r--r--arch/mips/kernel/sysirix.c2
-rw-r--r--arch/mips/orion/irq.c2
-rw-r--r--arch/mips/orion/misc.c2
-rw-r--r--arch/mips/orion/setup.c2
-rw-r--r--arch/mips/sgi/kernel/indy_int.c2
-rw-r--r--arch/mips64/kernel/process.c2
-rw-r--r--arch/mips64/kernel/setup.c2
-rw-r--r--arch/mips64/sgi-ip22/ip22-int.c2
-rw-r--r--arch/mips64/sgi-ip27/ip27-irq.c2
-rw-r--r--arch/parisc/kernel/ccio-dma.c2
-rw-r--r--arch/parisc/kernel/iosapic.c2
-rw-r--r--arch/parisc/kernel/irq.c2
-rw-r--r--arch/parisc/kernel/lba_pci.c2
-rw-r--r--arch/parisc/kernel/pci-dma.c2
-rw-r--r--arch/parisc/kernel/process.c2
-rw-r--r--arch/parisc/kernel/sba_iommu.c2
-rw-r--r--arch/parisc/kernel/setup.c2
-rw-r--r--arch/parisc/mm/kmap.c2
-rw-r--r--arch/ppc/8260_io/enet.c2
-rw-r--r--arch/ppc/8260_io/fcc_enet.c2
-rw-r--r--arch/ppc/8260_io/uart.c2
-rw-r--r--arch/ppc/8xx_io/enet.c2
-rw-r--r--arch/ppc/8xx_io/fec.c2
-rw-r--r--arch/ppc/8xx_io/uart.c2
-rw-r--r--arch/ppc/kernel/checks.c2
-rw-r--r--arch/ppc/kernel/idle.c2
-rw-r--r--arch/ppc/kernel/irq.c2
-rw-r--r--arch/ppc/kernel/m8260_setup.c2
-rw-r--r--arch/ppc/kernel/m8xx_setup.c2
-rw-r--r--arch/ppc/kernel/pmac_setup.c2
-rw-r--r--arch/ppc/kernel/prep_nvram.c2
-rw-r--r--arch/ppc/kernel/prep_setup.c2
-rw-r--r--arch/ppc/kernel/process.c2
-rw-r--r--arch/ppc/kernel/residual.c2
-rw-r--r--arch/ppc/kernel/softemu8xx.c2
-rw-r--r--arch/ppc/kernel/traps.c2
-rw-r--r--arch/s390/kernel/irq.c2
-rw-r--r--arch/s390/kernel/process.c2
-rw-r--r--arch/s390/kernel/s390io.c2
-rw-r--r--arch/s390/kernel/setup.c2
-rw-r--r--arch/sh/kernel/irq.c2
-rw-r--r--arch/sh/kernel/process.c2
-rw-r--r--arch/sh/kernel/setup.c2
-rw-r--r--arch/sparc/kernel/ebus.c2
-rw-r--r--arch/sparc/kernel/ioport.c2
-rw-r--r--arch/sparc/kernel/irq.c2
-rw-r--r--arch/sparc/kernel/pcic.c2
-rw-r--r--arch/sparc/kernel/process.c2
-rw-r--r--arch/sparc/kernel/setup.c2
-rw-r--r--arch/sparc/kernel/sun4c_irq.c2
-rw-r--r--arch/sparc/kernel/sun4d_irq.c2
-rw-r--r--arch/sparc/kernel/sun4d_smp.c6
-rw-r--r--arch/sparc/kernel/sun4m_irq.c2
-rw-r--r--arch/sparc/kernel/sun4m_smp.c4
-rw-r--r--arch/sparc/kernel/sys_sunos.c2
-rw-r--r--arch/sparc/mm/io-unit.c2
-rw-r--r--arch/sparc/mm/iommu.c2
-rw-r--r--arch/sparc/mm/srmmu.c2
-rw-r--r--arch/sparc64/kernel/binfmt_aout32.c2
-rw-r--r--arch/sparc64/kernel/ebus.c2
-rw-r--r--arch/sparc64/kernel/ioctl32.c6
-rw-r--r--arch/sparc64/kernel/irq.c2
-rw-r--r--arch/sparc64/kernel/pci_common.c2
-rw-r--r--arch/sparc64/kernel/pci_psycho.c2
-rw-r--r--arch/sparc64/kernel/pci_sabre.c2
-rw-r--r--arch/sparc64/kernel/pci_schizo.c2
-rw-r--r--arch/sparc64/kernel/process.c2
-rw-r--r--arch/sparc64/kernel/sbus.c2
-rw-r--r--arch/sparc64/kernel/setup.c2
-rw-r--r--arch/sparc64/kernel/starfire.c2
-rw-r--r--arch/sparc64/kernel/sys_sparc.c2
-rw-r--r--arch/sparc64/kernel/sys_sparc32.c2
-rw-r--r--arch/sparc64/kernel/sys_sunos32.c2
-rw-r--r--arch/sparc64/kernel/traps.c26
-rw-r--r--arch/sparc64/mm/init.c2
-rw-r--r--arch/sparc64/mm/modutil.c2
-rw-r--r--arch/sparc64/solaris/fs.c2
-rw-r--r--arch/sparc64/solaris/socket.c2
-rw-r--r--arch/sparc64/solaris/socksys.c2
-rw-r--r--drivers/acorn/char/keyb_arc.c2
-rw-r--r--drivers/acorn/char/keyb_ps2.c2
-rw-r--r--drivers/acorn/char/pcf8583.c2
-rw-r--r--drivers/acorn/net/ether1.c2
-rw-r--r--drivers/acorn/net/ether3.c2
-rw-r--r--drivers/acorn/net/etherh.c2
-rw-r--r--drivers/acorn/scsi/queue.c2
-rw-r--r--drivers/acpi/acpi_ksyms.c1
-rw-r--r--drivers/acpi/cmbatt.c80
-rw-r--r--drivers/acpi/common/cmcopy.c724
-rw-r--r--drivers/acpi/common/cmobject.c268
-rw-r--r--drivers/acpi/common/cmutils.c220
-rw-r--r--drivers/acpi/common/cmxface.c12
-rw-r--r--drivers/acpi/cpu.c85
-rw-r--r--drivers/acpi/dispatcher/dsobject.c3
-rw-r--r--drivers/acpi/dispatcher/dsopcode.c3
-rw-r--r--drivers/acpi/driver.c41
-rw-r--r--drivers/acpi/driver.h12
-rw-r--r--drivers/acpi/ec.c2
-rw-r--r--drivers/acpi/events/evevent.c91
-rw-r--r--drivers/acpi/events/evregion.c2
-rw-r--r--drivers/acpi/hardware/hwsleep.c11
-rw-r--r--drivers/acpi/hardware/hwtimer.c10
-rw-r--r--drivers/acpi/include/accommon.h61
-rw-r--r--drivers/acpi/include/acconfig.h9
-rw-r--r--drivers/acpi/include/acdebug.h7
-rw-r--r--drivers/acpi/include/acgcc.h8
-rw-r--r--drivers/acpi/include/acinterp.h8
-rw-r--r--drivers/acpi/include/aclinux.h12
-rw-r--r--drivers/acpi/include/aclocal.h21
-rw-r--r--drivers/acpi/include/acnamesp.h9
-rw-r--r--drivers/acpi/include/acoutput.h3
-rw-r--r--drivers/acpi/include/actypes.h23
-rw-r--r--drivers/acpi/interpreter/amfldio.c4
-rw-r--r--drivers/acpi/interpreter/amstore.c5
-rw-r--r--drivers/acpi/interpreter/amstorob.c19
-rw-r--r--drivers/acpi/interpreter/amutils.c167
-rw-r--r--drivers/acpi/namespace/nseval.c30
-rw-r--r--drivers/acpi/namespace/nsinit.c12
-rw-r--r--drivers/acpi/namespace/nsnames.c65
-rw-r--r--drivers/acpi/namespace/nsxfobj.c15
-rw-r--r--drivers/acpi/resources/rscalc.c29
-rw-r--r--drivers/acpi/resources/rscreate.c74
-rw-r--r--drivers/acpi/resources/rsdump.c14
-rw-r--r--drivers/acpi/resources/rslist.c6
-rw-r--r--drivers/acpi/tables/tbconvrt.c2
-rw-r--r--drivers/atm/fore200e.c2
-rw-r--r--drivers/block/DAC960.c2
-rw-r--r--drivers/block/acsi.c2
-rw-r--r--drivers/block/acsi_slm.c2
-rw-r--r--drivers/block/ataflop.c2
-rw-r--r--drivers/block/cciss.c2
-rw-r--r--drivers/block/cpqarray.c2
-rw-r--r--drivers/block/cpqarray.h2
-rw-r--r--drivers/block/elevator.c5
-rw-r--r--drivers/block/floppy.c2
-rw-r--r--drivers/block/ll_rw_blk.c2
-rw-r--r--drivers/block/loop.c2
-rw-r--r--drivers/block/paride/pg.c2
-rw-r--r--drivers/block/paride/pt.c2
-rw-r--r--drivers/block/rd.c2
-rw-r--r--drivers/block/z2ram.c2
-rw-r--r--drivers/cdrom/cdrom.c2
-rw-r--r--drivers/cdrom/cdu31a.c2
-rw-r--r--drivers/cdrom/cm206.c2
-rw-r--r--drivers/cdrom/gscd.c2
-rw-r--r--drivers/cdrom/mcdx.c2
-rw-r--r--drivers/cdrom/sonycd535.c2
-rw-r--r--drivers/char/acquirewdt.c2
-rw-r--r--drivers/char/agp/agpgart_be.c2
-rw-r--r--drivers/char/agp/agpgart_fe.c2
-rw-r--r--drivers/char/amiserial.c2
-rw-r--r--drivers/char/applicom.c2
-rw-r--r--drivers/char/busmouse.c2
-rw-r--r--drivers/char/console.c2
-rw-r--r--drivers/char/consolemap.c3
-rw-r--r--drivers/char/dsp56k.c2
-rw-r--r--drivers/char/dz.c2
-rw-r--r--drivers/char/esp.c2
-rw-r--r--drivers/char/ftape/lowlevel/ftape-buffer.c2
-rw-r--r--drivers/char/ftape/zftape/zftape-buffers.c2
-rw-r--r--drivers/char/ftape/zftape/zftape-init.c2
-rw-r--r--drivers/char/ftape/zftape/zftape-vtbl.c2
-rw-r--r--drivers/char/ip2main.c2
-rw-r--r--drivers/char/istallion.c3
-rw-r--r--drivers/char/joystick/a3d.c2
-rw-r--r--drivers/char/joystick/adi.c2
-rw-r--r--drivers/char/joystick/analog.c2
-rw-r--r--drivers/char/joystick/cobra.c2
-rw-r--r--drivers/char/joystick/gameport.c2
-rw-r--r--drivers/char/joystick/gf2k.c2
-rw-r--r--drivers/char/joystick/grip.c2
-rw-r--r--drivers/char/joystick/iforce.c2
-rw-r--r--drivers/char/joystick/interact.c2
-rw-r--r--drivers/char/joystick/lightning.c2
-rw-r--r--drivers/char/joystick/magellan.c2
-rw-r--r--drivers/char/joystick/ns558.c2
-rw-r--r--drivers/char/joystick/serport.c2
-rw-r--r--drivers/char/joystick/sidewinder.c2
-rw-r--r--drivers/char/joystick/spaceball.c2
-rw-r--r--drivers/char/joystick/spaceorb.c2
-rw-r--r--drivers/char/joystick/tmdc.c2
-rw-r--r--drivers/char/joystick/warrior.c2
-rw-r--r--drivers/char/lp.c2
-rw-r--r--drivers/char/mem.c3
-rw-r--r--drivers/char/misc.c2
-rw-r--r--drivers/char/n_hdlc.c2
-rw-r--r--drivers/char/n_r3964.c2
-rw-r--r--drivers/char/n_tty.c2
-rw-r--r--drivers/char/nvram.c5
-rw-r--r--drivers/char/pc_keyb.c2
-rw-r--r--drivers/char/pcmcia/serial_cb.c2
-rw-r--r--drivers/char/pcmcia/serial_cs.c2
-rw-r--r--drivers/char/pcwd.c2
-rw-r--r--drivers/char/pcxx.c2
-rw-r--r--drivers/char/q40_keyb.c2
-rw-r--r--drivers/char/qpmouse.c2
-rw-r--r--drivers/char/random.c2
-rw-r--r--drivers/char/rio/rio_linux.c2
-rw-r--r--drivers/char/rio/rioboot.c2
-rw-r--r--drivers/char/rio/riocmd.c3
-rw-r--r--drivers/char/rio/rioctrl.c2
-rw-r--r--drivers/char/rio/rioinit.c2
-rw-r--r--drivers/char/rio/riointr.c3
-rw-r--r--drivers/char/rio/rioparam.c3
-rw-r--r--drivers/char/rio/rioroute.c2
-rw-r--r--drivers/char/rio/riotable.c2
-rw-r--r--drivers/char/rio/riotty.c3
-rw-r--r--drivers/char/rocket.c2
-rw-r--r--drivers/char/sbc60xxwdt.c2
-rw-r--r--drivers/char/scan_keyb.c2
-rw-r--r--drivers/char/selection.c2
-rw-r--r--drivers/char/serial_21285.c2
-rw-r--r--drivers/char/serial_amba.c2
-rw-r--r--drivers/char/sh-sci.c2
-rw-r--r--drivers/char/stallion.c3
-rw-r--r--drivers/char/synclink.c2
-rw-r--r--drivers/char/sysrq.c1
-rw-r--r--drivers/char/tpqic02.c2
-rw-r--r--drivers/char/tty_io.c2
-rw-r--r--drivers/char/vme_scc.c2
-rw-r--r--drivers/char/vt.c2
-rw-r--r--drivers/char/wdt.c2
-rw-r--r--drivers/char/wdt_pci.c2
-rw-r--r--drivers/dio/dio.c2
-rw-r--r--drivers/fc4/fc.c2
-rw-r--r--drivers/fc4/soc.c2
-rw-r--r--drivers/fc4/socal.c2
-rw-r--r--drivers/i2c/i2c-algo-bit.c2
-rw-r--r--drivers/i2c/i2c-algo-pcf.c2
-rw-r--r--drivers/i2c/i2c-core.c19
-rw-r--r--drivers/i2c/i2c-dev.c2
-rw-r--r--drivers/i2c/i2c-elektor.c2
-rw-r--r--drivers/i2c/i2c-elv.c2
-rw-r--r--drivers/i2c/i2c-pcf8584.h2
-rw-r--r--drivers/i2o/i2o_block.c2
-rw-r--r--drivers/i2o/i2o_config.c2
-rw-r--r--drivers/i2o/i2o_core.c2
-rw-r--r--drivers/i2o/i2o_lan.c2
-rw-r--r--drivers/i2o/i2o_pci.c2
-rw-r--r--drivers/ide/hd.c2
-rw-r--r--drivers/ide/icside.c2
-rw-r--r--drivers/ide/ide-cd.c2
-rw-r--r--drivers/ide/ide-cs.c11
-rw-r--r--drivers/ide/ide-disk.c2
-rw-r--r--drivers/ide/ide-features.c6
-rw-r--r--drivers/ide/ide-floppy.c2
-rw-r--r--drivers/ide/ide-probe.c2
-rw-r--r--drivers/ide/ide-tape.c2
-rw-r--r--drivers/ide/ide.c2
-rw-r--r--drivers/ide/rapide.c2
-rw-r--r--drivers/input/evdev.c2
-rw-r--r--drivers/input/joydev.c2
-rw-r--r--drivers/input/keybdev.c3
-rw-r--r--drivers/input/mousedev.c2
-rw-r--r--drivers/isdn/act2000/act2000.h2
-rw-r--r--drivers/isdn/avmb1/avm_cs.c2
-rw-r--r--drivers/isdn/avmb1/capi.c2
-rw-r--r--drivers/isdn/avmb1/capidrv.c2
-rw-r--r--drivers/isdn/avmb1/capifs.c2
-rw-r--r--drivers/isdn/eicon/Divas_mod.c2
-rw-r--r--drivers/isdn/eicon/eicon.h2
-rw-r--r--drivers/isdn/eicon/linchr.c2
-rw-r--r--drivers/isdn/eicon/linio.c2
-rw-r--r--drivers/isdn/hisax/hisax.h2
-rw-r--r--drivers/isdn/hysdn/hysdn_boot.c2
-rw-r--r--drivers/isdn/hysdn/hysdn_init.c2
-rw-r--r--drivers/isdn/icn/icn.h2
-rw-r--r--drivers/isdn/isdn_bsdcomp.c2
-rw-r--r--drivers/isdn/isdn_v110.c2
-rw-r--r--drivers/isdn/isdnloop/isdnloop.h2
-rw-r--r--drivers/isdn/pcbit/callbacks.c2
-rw-r--r--drivers/isdn/pcbit/capi.c2
-rw-r--r--drivers/isdn/pcbit/drv.c2
-rw-r--r--drivers/isdn/pcbit/edss1.c2
-rw-r--r--drivers/isdn/pcbit/layer2.c2
-rw-r--r--drivers/isdn/sc/includes.h2
-rw-r--r--drivers/macintosh/adb.c2
-rw-r--r--drivers/macintosh/adbhid.c2
-rw-r--r--drivers/macintosh/rtc.c2
-rw-r--r--drivers/macintosh/via-pmu.c2
-rw-r--r--drivers/macintosh/via-pmu68k.c2
-rw-r--r--drivers/md/linear.c2
-rw-r--r--drivers/md/md.c200
-rw-r--r--drivers/md/raid1.c2
-rw-r--r--drivers/md/raid5.c20
-rw-r--r--drivers/media/video/bttv-driver.c2
-rw-r--r--drivers/media/video/buz.c2
-rw-r--r--drivers/media/video/bw-qcam.c2
-rw-r--r--drivers/media/video/c-qcam.c2
-rw-r--r--drivers/media/video/i2c-old.c2
-rw-r--r--drivers/media/video/msp3400.c2
-rw-r--r--drivers/media/video/planb.c2
-rw-r--r--drivers/media/video/pms.c2
-rw-r--r--drivers/media/video/saa7111.c2
-rw-r--r--drivers/media/video/saa7185.c2
-rw-r--r--drivers/media/video/stradis.c2
-rw-r--r--drivers/media/video/tda7432.c2
-rw-r--r--drivers/media/video/tda9875.c2
-rw-r--r--drivers/media/video/tuner-3036.c2
-rw-r--r--drivers/media/video/tuner.c2
-rw-r--r--drivers/media/video/tvaudio.c2
-rw-r--r--drivers/media/video/tvmixer.c2
-rw-r--r--drivers/media/video/zr36120.c2
-rw-r--r--drivers/mtd/cfi_cmdset_0001.c2
-rw-r--r--drivers/mtd/cfi_cmdset_0002.c2
-rw-r--r--drivers/mtd/cfi_probe.c2
-rw-r--r--drivers/mtd/doc1000.c2
-rw-r--r--drivers/mtd/doc2000.c2
-rw-r--r--drivers/mtd/doc2001.c2
-rw-r--r--drivers/mtd/docecc.c2
-rw-r--r--drivers/mtd/docprobe.c2
-rw-r--r--drivers/mtd/ftl.c2
-rw-r--r--drivers/mtd/map_ram.c2
-rw-r--r--drivers/mtd/map_rom.c2
-rw-r--r--drivers/mtd/mixmem.c2
-rw-r--r--drivers/mtd/mtdblock.c2
-rw-r--r--drivers/mtd/mtdchar.c2
-rw-r--r--drivers/mtd/mtdcore.c2
-rw-r--r--drivers/mtd/mtdpart.c2
-rw-r--r--drivers/mtd/mtdram.c2
-rw-r--r--drivers/mtd/nftl.c2
-rw-r--r--drivers/mtd/nftlmount.c2
-rw-r--r--drivers/mtd/octagon-5066.c2
-rw-r--r--drivers/mtd/pmc551.c2
-rw-r--r--drivers/mtd/slram.c2
-rw-r--r--drivers/mtd/vmax301.c2
-rw-r--r--drivers/net/3c523.c68
-rw-r--r--drivers/net/3c523.h2
-rw-r--r--drivers/net/de4x5.c4
-rw-r--r--drivers/net/de4x5.h2
-rw-r--r--drivers/net/ewrk3.c257
-rw-r--r--drivers/net/ne2.c139
-rw-r--r--drivers/parport/init.c2
-rw-r--r--drivers/parport/parport_arc.c2
-rw-r--r--drivers/parport/parport_gsc.c2
-rw-r--r--drivers/parport/parport_pc.c2
-rw-r--r--drivers/parport/parport_sunbpp.c2
-rw-r--r--drivers/parport/procfs.c2
-rw-r--r--drivers/parport/share.c2
-rw-r--r--drivers/pci/pci.c2
-rw-r--r--drivers/pcmcia/bulkmem.c2
-rw-r--r--drivers/pcmcia/cardbus.c2
-rw-r--r--drivers/pcmcia/cb_enabler.c2
-rw-r--r--drivers/pcmcia/cistpl.c2
-rw-r--r--drivers/pcmcia/cs.c2
-rw-r--r--drivers/pcmcia/ds.c2
-rw-r--r--drivers/pcmcia/i82365.c2
-rw-r--r--drivers/pcmcia/rsrc_mgr.c2
-rw-r--r--drivers/pcmcia/tcic.c2
-rw-r--r--drivers/pnp/isapnp.c2
-rw-r--r--drivers/s390/block/dasd.c2
-rw-r--r--drivers/s390/block/dasd_ccwstuff.c2
-rw-r--r--drivers/s390/block/dasd_eckd.c2
-rw-r--r--drivers/s390/block/mdisk.c2
-rw-r--r--drivers/s390/char/con3215.c2
-rw-r--r--drivers/s390/net/ctc.c2
-rw-r--r--drivers/s390/net/iucv.c2
-rw-r--r--drivers/sbus/audio/amd7930.c2
-rw-r--r--drivers/sbus/audio/audio.c8
-rw-r--r--drivers/sbus/audio/cs4231.c2
-rw-r--r--drivers/sbus/audio/dbri.c6
-rw-r--r--drivers/sbus/audio/dmy.c2
-rw-r--r--drivers/sbus/char/envctrl.c2
-rw-r--r--drivers/sbus/char/flash.c2
-rw-r--r--drivers/sbus/char/jsflash.c2
-rw-r--r--drivers/sbus/char/openprom.c2
-rw-r--r--drivers/sbus/char/pcikbd.c2
-rw-r--r--drivers/sbus/char/rtc.c2
-rw-r--r--drivers/sbus/char/sab82532.c2
-rw-r--r--drivers/sbus/char/su.c2
-rw-r--r--drivers/sbus/char/uctrl.c2
-rw-r--r--drivers/sbus/char/vfc_dev.c4
-rw-r--r--drivers/sbus/char/vfc_i2c.c2
-rw-r--r--drivers/sbus/dvma.c4
-rw-r--r--drivers/sbus/sbus.c2
-rw-r--r--drivers/scsi/53c7,8xx.c2
-rw-r--r--drivers/scsi/53c7xx.c2
-rw-r--r--drivers/scsi/NCR53C9x.c2
-rw-r--r--drivers/scsi/advansys.c2
-rw-r--r--drivers/scsi/aic7xxx.c2
-rw-r--r--drivers/scsi/blz1230.c2
-rw-r--r--drivers/scsi/blz2060.c2
-rw-r--r--drivers/scsi/cpqfcTScontrol.c2
-rw-r--r--drivers/scsi/cpqfcTSinit.c2
-rw-r--r--drivers/scsi/cpqfcTSworker.c2
-rw-r--r--drivers/scsi/cyberstorm.c2
-rw-r--r--drivers/scsi/cyberstormII.c2
-rw-r--r--drivers/scsi/dec_esp.c2
-rw-r--r--drivers/scsi/eata_dma.c2
-rw-r--r--drivers/scsi/eata_pio.c2
-rw-r--r--drivers/scsi/esp.c2
-rw-r--r--drivers/scsi/fastlane.c2
-rw-r--r--drivers/scsi/fcal.c2
-rw-r--r--drivers/scsi/ide-scsi.c2
-rw-r--r--drivers/scsi/ini9100u.c2
-rw-r--r--drivers/scsi/inia100.c2
-rw-r--r--drivers/scsi/ips.c2
-rw-r--r--drivers/scsi/jazz_esp.c2
-rw-r--r--drivers/scsi/mac53c94.c2
-rw-r--r--drivers/scsi/mac_esp.c2
-rw-r--r--drivers/scsi/mca_53c9x.c2
-rw-r--r--drivers/scsi/mesh.c2
-rw-r--r--drivers/scsi/ncr53c8xx.c2
-rw-r--r--drivers/scsi/oktagon_esp.c2
-rw-r--r--drivers/scsi/pci2220i.c2
-rw-r--r--drivers/scsi/pcmcia/aha152x_stub.c2
-rw-r--r--drivers/scsi/pcmcia/apa1480_stub.c2
-rw-r--r--drivers/scsi/pcmcia/fdomain_stub.c2
-rw-r--r--drivers/scsi/pcmcia/qlogic_stub.c2
-rw-r--r--drivers/scsi/pluto.c2
-rw-r--r--drivers/scsi/qla1280.c2
-rw-r--r--drivers/scsi/qlogicpti.c2
-rw-r--r--drivers/scsi/scsi.c2
-rw-r--r--drivers/scsi/scsi_error.c2
-rw-r--r--drivers/scsi/scsi_lib.c2
-rw-r--r--drivers/scsi/scsi_merge.c2
-rw-r--r--drivers/scsi/scsi_obsolete.c2
-rw-r--r--drivers/scsi/scsi_proc.c2
-rw-r--r--drivers/scsi/scsi_queue.c2
-rw-r--r--drivers/scsi/scsi_syms.c2
-rw-r--r--drivers/scsi/sun3x_esp.c2
-rw-r--r--drivers/scsi/sym53c8xx.c2
-rw-r--r--drivers/scsi/wd7000.c2
-rw-r--r--drivers/sgi/char/ds1286.c2
-rw-r--r--drivers/sgi/char/graphics.c2
-rw-r--r--drivers/sound/cmpci.c2
-rw-r--r--drivers/sound/cs46xx.c2
-rw-r--r--drivers/sound/dmasound/dmasound_awacs.c3
-rw-r--r--drivers/sound/dmasound/dmasound_core.c2
-rw-r--r--drivers/sound/dmasound/dmasound_q40.c2
-rw-r--r--drivers/sound/emu10k1/audio.c2
-rw-r--r--drivers/sound/emu10k1/cardmi.c2
-rw-r--r--drivers/sound/emu10k1/cardmo.c2
-rw-r--r--drivers/sound/emu10k1/main.c2
-rw-r--r--drivers/sound/emu10k1/midi.c2
-rw-r--r--drivers/sound/es1370.c2
-rw-r--r--drivers/sound/es1371.c2
-rw-r--r--drivers/sound/esssolo1.c2
-rw-r--r--drivers/sound/i810_audio.c2
-rw-r--r--drivers/sound/maestro.c2
-rw-r--r--drivers/sound/maestro3.c26
-rw-r--r--drivers/sound/msnd.c2
-rw-r--r--drivers/sound/msnd_pinnacle.c2
-rw-r--r--drivers/sound/os.h2
-rw-r--r--drivers/sound/sonicvibes.c2
-rw-r--r--drivers/sound/sound_core.c2
-rw-r--r--drivers/sound/sound_firmware.c2
-rw-r--r--drivers/sound/soundcard.c2
-rw-r--r--drivers/sound/sscape.c2
-rw-r--r--drivers/sound/trident.c2
-rw-r--r--drivers/sound/wavfront.c2
-rw-r--r--drivers/telephony/ixj.c2
-rw-r--r--drivers/usb/acm.c3
-rw-r--r--drivers/usb/audio.c2
-rw-r--r--drivers/usb/bluetooth.c4
-rw-r--r--drivers/usb/dc2xx.c2
-rw-r--r--drivers/usb/dsbr100.c2
-rw-r--r--drivers/usb/hid.c2
-rw-r--r--drivers/usb/hid.h2
-rw-r--r--drivers/usb/hub.c2
-rw-r--r--drivers/usb/ibmcam.c2
-rw-r--r--drivers/usb/mdc800.c2
-rw-r--r--drivers/usb/microtek.c2
-rw-r--r--drivers/usb/pegasus.c2
-rw-r--r--drivers/usb/printer.c2
-rw-r--r--drivers/usb/rio500.c2
-rw-r--r--drivers/usb/scanner.h2
-rw-r--r--drivers/usb/serial/belkin_sa.c4
-rw-r--r--drivers/usb/serial/digi_acceleport.c4
-rw-r--r--drivers/usb/serial/empeg.c4
-rw-r--r--drivers/usb/serial/ftdi_sio.c4
-rw-r--r--drivers/usb/serial/keyspan.c4
-rw-r--r--drivers/usb/serial/keyspan_pda.c4
-rw-r--r--drivers/usb/serial/mct_u232.c4
-rw-r--r--drivers/usb/serial/omninet.c4
-rw-r--r--drivers/usb/serial/usbserial.c4
-rw-r--r--drivers/usb/serial/visor.c4
-rw-r--r--drivers/usb/serial/whiteheat.c4
-rw-r--r--drivers/usb/storage/scsiglue.c2
-rw-r--r--drivers/usb/storage/sddr09.c2
-rw-r--r--drivers/usb/storage/shuttle_usbat.c2
-rw-r--r--drivers/usb/storage/transport.c2
-rw-r--r--drivers/usb/storage/usb.c2
-rw-r--r--drivers/usb/uhci.c2
-rw-r--r--drivers/usb/usb-debug.c2
-rw-r--r--drivers/usb/usb-ohci.c2
-rw-r--r--drivers/usb/usb-uhci.c2
-rw-r--r--drivers/usb/usb.c2
-rw-r--r--drivers/usb/usbkbd.c2
-rw-r--r--drivers/usb/usbmouse.c2
-rw-r--r--drivers/usb/wacom.c2
-rw-r--r--drivers/video/S3triofb.c2
-rw-r--r--drivers/video/acornfb.c2
-rw-r--r--drivers/video/amifb.c2
-rw-r--r--drivers/video/atafb.c2
-rw-r--r--drivers/video/aty128fb.c2
-rw-r--r--drivers/video/atyfb.c2
-rw-r--r--drivers/video/bwtwofb.c2
-rw-r--r--drivers/video/cgfourteenfb.c2
-rw-r--r--drivers/video/cgsixfb.c2
-rw-r--r--drivers/video/cgthreefb.c2
-rw-r--r--drivers/video/chipsfb.c2
-rw-r--r--drivers/video/clgenfb.c2
-rw-r--r--drivers/video/controlfb.c2
-rw-r--r--drivers/video/creatorfb.c2
-rw-r--r--drivers/video/cyber2000fb.c2
-rw-r--r--drivers/video/cyberfb.c2
-rw-r--r--drivers/video/dn_cfb4.c2
-rw-r--r--drivers/video/dn_cfb8.c2
-rw-r--r--drivers/video/dnfb.c2
-rw-r--r--drivers/video/fbcon.c2
-rw-r--r--drivers/video/fbmem.c2
-rw-r--r--drivers/video/g364fb.c2
-rw-r--r--drivers/video/hgafb.c2
-rw-r--r--drivers/video/hitfb.c2
-rw-r--r--drivers/video/hpfb.c2
-rw-r--r--drivers/video/igafb.c2
-rw-r--r--drivers/video/imsttfb.c2
-rw-r--r--drivers/video/leofb.c2
-rw-r--r--drivers/video/macfb.c2
-rw-r--r--drivers/video/matrox/matroxfb_base.h2
-rw-r--r--drivers/video/mdacon.c2
-rw-r--r--drivers/video/offb.c2
-rw-r--r--drivers/video/p9100fb.c2
-rw-r--r--drivers/video/platinumfb.c2
-rw-r--r--drivers/video/pm2fb.c2
-rw-r--r--drivers/video/promcon.c2
-rw-r--r--drivers/video/q40fb.c2
-rw-r--r--drivers/video/retz3fb.c2
-rw-r--r--drivers/video/riva/fbdev.c2
-rw-r--r--drivers/video/sa1100fb.c2
-rw-r--r--drivers/video/sbusfb.c2
-rw-r--r--drivers/video/sgivwfb.c2
-rw-r--r--drivers/video/sis/sis_main.c2
-rw-r--r--drivers/video/skeletonfb.c2
-rw-r--r--drivers/video/sticon-bmode.c2
-rw-r--r--drivers/video/sticore.c2
-rw-r--r--drivers/video/stifb.c2
-rw-r--r--drivers/video/sun3fb.c2
-rw-r--r--drivers/video/tcxfb.c2
-rw-r--r--drivers/video/tdfxfb.c2
-rw-r--r--drivers/video/tgafb.c2
-rw-r--r--drivers/video/valkyriefb.c2
-rw-r--r--drivers/video/vesafb.c2
-rw-r--r--drivers/video/vfb.c2
-rw-r--r--drivers/video/vga16fb.c2
-rw-r--r--drivers/video/vgacon.c2
-rw-r--r--drivers/video/virgefb.c2
-rw-r--r--fs/adfs/super.c2
-rw-r--r--fs/affs/file.c2
-rw-r--r--fs/affs/inode.c2
-rw-r--r--fs/affs/super.c2
-rw-r--r--fs/autofs/autofs_i.h2
-rw-r--r--fs/autofs/inode.c2
-rw-r--r--fs/autofs/waitq.c2
-rw-r--r--fs/autofs4/autofs_i.h2
-rw-r--r--fs/autofs4/inode.c2
-rw-r--r--fs/autofs4/waitq.c2
-rw-r--r--fs/binfmt_aout.c2
-rw-r--r--fs/binfmt_elf.c2
-rw-r--r--fs/binfmt_em86.c2
-rw-r--r--fs/binfmt_misc.c2
-rw-r--r--fs/binfmt_script.c2
-rw-r--r--fs/block_dev.c3
-rw-r--r--fs/buffer.c2
-rw-r--r--fs/coda/cnode.c7
-rw-r--r--fs/coda/psdev.c2
-rw-r--r--fs/coda/sysctl.c2
-rw-r--r--fs/coda/upcall.c8
-rw-r--r--fs/dcache.c8
-rw-r--r--fs/devfs/base.c2
-rw-r--r--fs/devpts/inode.c2
-rw-r--r--fs/dquot.c2
-rw-r--r--fs/fat/buffer.c2
-rw-r--r--fs/fat/inode.c2
-rw-r--r--fs/fifo.c2
-rw-r--r--fs/file.c2
-rw-r--r--fs/hpfs/hpfs_fn.h2
-rw-r--r--fs/inode.c2
-rw-r--r--fs/iobuf.c2
-rw-r--r--fs/ioctl.c1
-rw-r--r--fs/isofs/dir.c2
-rw-r--r--fs/isofs/inode.c2
-rw-r--r--fs/isofs/joliet.c2
-rw-r--r--fs/isofs/namei.c2
-rw-r--r--fs/isofs/rock.c2
-rw-r--r--fs/jffs/inode-v23.c2
-rw-r--r--fs/jffs/intrep.c2
-rw-r--r--fs/jffs/jffs_fm.c2
-rw-r--r--fs/lockd/host.c2
-rw-r--r--fs/lockd/svc.c2
-rw-r--r--fs/lockd/svc4proc.c2
-rw-r--r--fs/lockd/svcproc.c2
-rw-r--r--fs/lockd/svcshare.c2
-rw-r--r--fs/locks.c2
-rw-r--r--fs/minix/inode.c2
-rw-r--r--fs/ncpfs/dir.c2
-rw-r--r--fs/ncpfs/file.c2
-rw-r--r--fs/ncpfs/inode.c2
-rw-r--r--fs/ncpfs/mmap.c2
-rw-r--r--fs/ncpfs/ncplib_kernel.h2
-rw-r--r--fs/nfs/dir.c2
-rw-r--r--fs/nfs/file.c2
-rw-r--r--fs/nfs/flushd.c2
-rw-r--r--fs/nfs/nfs2xdr.c2
-rw-r--r--fs/nfs/nfs3xdr.c2
-rw-r--r--fs/nfs/proc.c2
-rw-r--r--fs/nfs/read.c2
-rw-r--r--fs/nfs/symlink.c2
-rw-r--r--fs/nfs/unlink.c2
-rw-r--r--fs/nfs/write.c2
-rw-r--r--fs/nfsd/export.c2
-rw-r--r--fs/nfsd/nfs3proc.c2
-rw-r--r--fs/nfsd/nfscache.c2
-rw-r--r--fs/nfsd/nfsctl.c2
-rw-r--r--fs/nfsd/nfsfh.c3
-rw-r--r--fs/nfsd/nfsproc.c17
-rw-r--r--fs/nfsd/nfssvc.c2
-rw-r--r--fs/nfsd/nfsxdr.c13
-rw-r--r--fs/nfsd/vfs.c2
-rw-r--r--fs/nls/nls_base.c2
-rw-r--r--fs/open.c1
-rw-r--r--fs/openpromfs/inode.c2
-rw-r--r--fs/pipe.c3
-rw-r--r--fs/qnx4/inode.c2
-rw-r--r--fs/qnx4/truncate.c2
-rw-r--r--fs/read_write.c2
-rw-r--r--fs/romfs/inode.c2
-rw-r--r--fs/select.c2
-rw-r--r--fs/smbfs/file.c2
-rw-r--r--fs/smbfs/inode.c2
-rw-r--r--fs/smbfs/proc.c2
-rw-r--r--fs/super.c3
-rw-r--r--fs/udf/dir.c2
-rw-r--r--fs/udf/namei.c2
-rw-r--r--fs/udf/partition.c2
-rw-r--r--fs/udf/super.c2
-rw-r--r--fs/udf/symlink.c2
-rw-r--r--fs/ufs/super.c2
-rw-r--r--fs/ufs/util.c2
-rw-r--r--fs/umsdos/dir.c2
-rw-r--r--fs/umsdos/namei.c2
-rw-r--r--fs/umsdos/rdir.c2
-rw-r--r--fs/vfat/namei.c2
-rw-r--r--include/asm-alpha/errno.h2
-rw-r--r--include/asm-i386/errno.h1
-rw-r--r--include/asm-m68k/errno.h2
-rw-r--r--include/asm-sparc/termios.h2
-rw-r--r--include/asm-sparc64/termios.h2
-rw-r--r--include/linux/acpi.h11
-rw-r--r--include/linux/coda_linux.h2
-rw-r--r--include/linux/elevator.h7
-rw-r--r--include/linux/hfs_sysdep.h2
-rw-r--r--include/linux/highmem.h2
-rw-r--r--include/linux/interrupt.h2
-rw-r--r--include/linux/isdn.h2
-rw-r--r--include/linux/mtd/map.h2
-rw-r--r--include/linux/ncp_fs.h2
-rw-r--r--include/linux/pci.h4
-rw-r--r--include/linux/proc_fs.h2
-rw-r--r--include/linux/raid/raid5.h28
-rw-r--r--include/linux/reiserfs_fs.h2
-rw-r--r--include/linux/skbuff.h2
-rw-r--r--include/net/ip_fib.h2
-rw-r--r--ipc/msg.c2
-rw-r--r--ipc/sem.c2
-rw-r--r--ipc/shm.c2
-rw-r--r--ipc/util.c2
-rw-r--r--kernel/acct.c1
-rw-r--r--kernel/exit.c3
-rw-r--r--kernel/fork.c2
-rw-r--r--kernel/ksyms.c3
-rw-r--r--kernel/resource.c2
-rw-r--r--kernel/sched.c8
-rw-r--r--kernel/sysctl.c2
-rw-r--r--mm/filemap.c4
-rw-r--r--mm/swapfile.c2
-rw-r--r--mm/vmalloc.c2
-rw-r--r--net/802/cl2llc.c6
-rw-r--r--net/802/llc_macinit.c4
-rw-r--r--net/802/llc_sendpdu.c2
-rw-r--r--net/Changes44
-rw-r--r--net/Config.in20
-rw-r--r--net/appletalk/Makefile2
-rw-r--r--net/atm/common.c3
-rw-r--r--net/atm/lec.h4
-rw-r--r--net/ax25/Makefile2
-rw-r--r--net/ax25/af_ax25.c26
-rw-r--r--net/ax25/ax25_in.c4
-rw-r--r--net/ax25/sysctl_net_ax25.c4
-rw-r--r--net/bridge/br_private.h74
-rw-r--r--net/bridge/br_private_stp.h30
-rw-r--r--net/core/iovec.c2
-rw-r--r--net/core/skbuff.c2
-rw-r--r--net/decnet/af_decnet.c1
-rw-r--r--net/decnet/sysctl_net_decnet.c6
-rw-r--r--net/ipv4/arp.c32
-rw-r--r--net/ipv4/devinet.c4
-rw-r--r--net/ipv4/ipconfig.c2
-rw-r--r--net/ipv4/netfilter/ip_fw_compat.c19
-rw-r--r--net/ipv4/netfilter/ipt_TOS.c6
-rw-r--r--net/ipv4/raw.c1
-rw-r--r--net/ipv4/syncookies.c2
-rw-r--r--net/ipv4/tcp.c170
-rw-r--r--net/ipv4/tcp_input.c88
-rw-r--r--net/ipv4/tcp_timer.c2
-rw-r--r--net/ipv4/udp.c28
-rw-r--r--net/ipv6/addrconf.c2
-rw-r--r--net/ipv6/raw.c1
-rw-r--r--net/ipx/af_ipx.c45
-rw-r--r--net/irda/compressors/irda_deflate.c2
-rw-r--r--net/irda/irlap.c2
-rw-r--r--net/irda/irlmp.c2
-rw-r--r--net/khttpd/misc.c2
-rw-r--r--net/khttpd/rfc.c2
-rw-r--r--net/khttpd/rfc_time.c2
-rw-r--r--net/khttpd/security.c2
-rw-r--r--net/khttpd/sysctl.c4
-rw-r--r--net/khttpd/userspace.c2
-rw-r--r--net/lapb/Makefile2
-rw-r--r--net/lapb/lapb_iface.c14
-rw-r--r--net/lapb/lapb_in.c4
-rw-r--r--net/lapb/lapb_out.c4
-rw-r--r--net/lapb/lapb_subr.c4
-rw-r--r--net/lapb/lapb_timer.c4
-rw-r--r--net/netlink/af_netlink.c2
-rw-r--r--net/netlink/netlink_dev.c2
-rw-r--r--net/netrom/Makefile2
-rw-r--r--net/netsyms.c1
-rw-r--r--net/packet/af_packet.c1
-rw-r--r--net/rose/Makefile2
-rw-r--r--net/sched/sch_atm.c2
-rw-r--r--net/sched/sch_dsmark.c2
-rw-r--r--net/sunrpc/auth.c2
-rw-r--r--net/sunrpc/auth_null.c2
-rw-r--r--net/sunrpc/auth_unix.c2
-rw-r--r--net/sunrpc/clnt.c2
-rw-r--r--net/sunrpc/sched.c2
-rw-r--r--net/sunrpc/svcsock.c3
-rw-r--r--net/sunrpc/xprt.c2
-rw-r--r--net/unix/af_unix.c11
-rw-r--r--net/unix/garbage.c2
-rw-r--r--net/wanrouter/wanmain.c2
-rw-r--r--net/wanrouter/wanproc.c33
795 files changed, 2803 insertions, 2546 deletions
diff --git a/Makefile b/Makefile
index dac5cf78a698..023940ed5ad7 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 2
-EXTRAVERSION =-pre2
+EXTRAVERSION =-pre3
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
diff --git a/arch/alpha/kernel/Makefile b/arch/alpha/kernel/Makefile
index abc04cca20f2..08ec1d61372f 100644
--- a/arch/alpha/kernel/Makefile
+++ b/arch/alpha/kernel/Makefile
@@ -30,9 +30,7 @@ ifdef CONFIG_VGA_HOSE
obj-y += console.o
endif
-
obj-$(CONFIG_SMP) += smp.o irq_smp.o
-
obj-$(CONFIG_PCI) += pci.o pci_iommu.o
ifdef CONFIG_ALPHA_GENERIC
@@ -76,7 +74,7 @@ obj-y += sys_eb64p.o
endif
obj-$(CONFIG_ALPHA_EIGER) += sys_eiger.o
-obj-$(CONFIG_ALPHA_JENSEN) += sys_jensen.o
+obj-$(CONFIG_ALPHA_JENSEN) += sys_jensen.o pci-noop.o
obj-$(CONFIG_ALPHA_MIATA) += sys_miata.o
obj-$(CONFIG_ALPHA_MIKASA) += sys_mikasa.o
obj-$(CONFIG_ALPHA_NAUTILUS) += sys_nautilus.o
diff --git a/arch/alpha/kernel/alpha_ksyms.c b/arch/alpha/kernel/alpha_ksyms.c
index 1039e59208e4..46238a78b95b 100644
--- a/arch/alpha/kernel/alpha_ksyms.c
+++ b/arch/alpha/kernel/alpha_ksyms.c
@@ -103,6 +103,8 @@ EXPORT_SYMBOL(clear_page);
EXPORT_SYMBOL(__direct_map_base);
EXPORT_SYMBOL(__direct_map_size);
+
+#ifdef CONFIG_PCI
EXPORT_SYMBOL(pci_alloc_consistent);
EXPORT_SYMBOL(pci_free_consistent);
EXPORT_SYMBOL(pci_map_single);
@@ -110,6 +112,7 @@ EXPORT_SYMBOL(pci_unmap_single);
EXPORT_SYMBOL(pci_map_sg);
EXPORT_SYMBOL(pci_unmap_sg);
EXPORT_SYMBOL(pci_dma_supported);
+#endif
EXPORT_SYMBOL(dump_thread);
EXPORT_SYMBOL(dump_fpu);
diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c
index 080e48e43f32..825eaf2d5bd0 100644
--- a/arch/alpha/kernel/irq.c
+++ b/arch/alpha/kernel/irq.c
@@ -18,7 +18,7 @@
#include <linux/signal.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <linux/init.h>
#include <linux/irq.h>
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c
index 72b47942ff22..6159457d9db9 100644
--- a/arch/alpha/kernel/osf_sys.c
+++ b/arch/alpha/kernel/osf_sys.c
@@ -19,7 +19,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/utsname.h>
diff --git a/arch/alpha/kernel/pci-noop.c b/arch/alpha/kernel/pci-noop.c
new file mode 100644
index 000000000000..d530ebb824b0
--- /dev/null
+++ b/arch/alpha/kernel/pci-noop.c
@@ -0,0 +1,104 @@
+/*
+ * linux/arch/alpha/kernel/pci-noop.c
+ *
+ * Stub PCI interfaces for Jensen-specific kernels.
+ */
+
+#include <linux/pci.h>
+#include <linux/init.h>
+#include <linux/bootmem.h>
+#include <linux/errno.h>
+#include <linux/sched.h>
+
+#include "proto.h"
+
+
+/*
+ * The PCI controler list.
+ */
+
+struct pci_controler *hose_head, **hose_tail = &hose_head;
+struct pci_controler *pci_isa_hose;
+
+
+struct pci_controler * __init
+alloc_pci_controler(void)
+{
+ struct pci_controler *hose;
+
+ hose = alloc_bootmem(sizeof(*hose));
+
+ *hose_tail = hose;
+ hose_tail = &hose->next;
+
+ return hose;
+}
+
+struct resource * __init
+alloc_resource(void)
+{
+ struct resource *res;
+
+ res = alloc_bootmem(sizeof(*res));
+
+ return res;
+}
+
+asmlinkage long
+sys_pciconfig_iobase(long which, unsigned long bus, unsigned long dfn)
+{
+ struct pci_controler *hose;
+ struct pci_dev *dev;
+
+ /* from hose or from bus.devfn */
+ if (which & IOBASE_FROM_HOSE) {
+ for (hose = hose_head; hose; hose = hose->next)
+ if (hose->index == bus)
+ break;
+ if (!hose)
+ return -ENODEV;
+ } else {
+ /* Special hook for ISA access. */
+ if (bus == 0 && dfn == 0)
+ hose = pci_isa_hose;
+ else
+ return -ENODEV;
+ }
+
+ switch (which & ~IOBASE_FROM_HOSE) {
+ case IOBASE_HOSE:
+ return hose->index;
+ case IOBASE_SPARSE_MEM:
+ return hose->sparse_mem_base;
+ case IOBASE_DENSE_MEM:
+ return hose->dense_mem_base;
+ case IOBASE_SPARSE_IO:
+ return hose->sparse_io_base;
+ case IOBASE_DENSE_IO:
+ return hose->dense_io_base;
+ case IOBASE_ROOT_BUS:
+ return hose->bus->number;
+ }
+
+ return -EOPNOTSUPP;
+}
+
+asmlinkage long
+sys_pciconfig_read(unsigned long bus, unsigned long dfn,
+ unsigned long off, unsigned long len, void *buf)
+{
+ if (!capable(CAP_SYS_ADMIN))
+ return -EPERM;
+ else
+ return -ENODEV;
+}
+
+asmlinkage long
+sys_pciconfig_write(unsigned long bus, unsigned long dfn,
+ unsigned long off, unsigned long len, void *buf)
+{
+ if (!capable(CAP_SYS_ADMIN))
+ return -EPERM;
+ else
+ return -ENODEV;
+}
diff --git a/arch/alpha/kernel/process.c b/arch/alpha/kernel/process.c
index d498ebb70d13..2dd505e10bb0 100644
--- a/arch/alpha/kernel/process.c
+++ b/arch/alpha/kernel/process.c
@@ -18,7 +18,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/utsname.h>
diff --git a/arch/alpha/kernel/ptrace.c b/arch/alpha/kernel/ptrace.c
index 09fcfd787610..a919e7c2fd50 100644
--- a/arch/alpha/kernel/ptrace.c
+++ b/arch/alpha/kernel/ptrace.c
@@ -12,7 +12,7 @@
#include <linux/errno.h>
#include <linux/ptrace.h>
#include <linux/user.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/uaccess.h>
#include <asm/pgtable.h>
diff --git a/arch/alpha/kernel/setup.c b/arch/alpha/kernel/setup.c
index 2acf56d96f86..a6443da535ee 100644
--- a/arch/alpha/kernel/setup.c
+++ b/arch/alpha/kernel/setup.c
@@ -16,7 +16,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/tty.h>
diff --git a/arch/alpha/kernel/smc37c669.c b/arch/alpha/kernel/smc37c669.c
index 0b2db18ab34c..3ffb611f2ccf 100644
--- a/arch/alpha/kernel/smc37c669.c
+++ b/arch/alpha/kernel/smc37c669.c
@@ -3,7 +3,7 @@
*/
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/init.h>
#include <linux/delay.h>
diff --git a/arch/alpha/kernel/smc37c93x.c b/arch/alpha/kernel/smc37c93x.c
index 5448305a3d8b..b0e15d307562 100644
--- a/arch/alpha/kernel/smc37c93x.c
+++ b/arch/alpha/kernel/smc37c93x.c
@@ -5,7 +5,7 @@
#include <linux/config.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/init.h>
#include <linux/delay.h>
diff --git a/arch/arm/config.in b/arch/arm/config.in
index a58394482c1e..561cf3bf3f06 100644
--- a/arch/arm/config.in
+++ b/arch/arm/config.in
@@ -352,7 +352,7 @@ endmenu
source drivers/ieee1394/Config.in
-source drivers/message/i2o/Config.in
+source drivers/i2o/Config.in
mainmenu_option next_comment
comment 'ISDN subsystem'
diff --git a/arch/arm/kernel/dma-rpc.c b/arch/arm/kernel/dma-rpc.c
index 86f2678a69df..402b71cdb5fd 100644
--- a/arch/arm/kernel/dma-rpc.c
+++ b/arch/arm/kernel/dma-rpc.c
@@ -10,7 +10,7 @@
* DMA functions specific to RiscPC architecture
*/
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mman.h>
#include <linux/init.h>
#include <linux/pci.h>
diff --git a/arch/arm/kernel/dma.c b/arch/arm/kernel/dma.c
index ad311020f081..7f0106953978 100644
--- a/arch/arm/kernel/dma.c
+++ b/arch/arm/kernel/dma.c
@@ -12,7 +12,7 @@
* DMA facilities.
*/
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/mman.h>
#include <linux/init.h>
diff --git a/arch/arm/kernel/ecard.c b/arch/arm/kernel/ecard.c
index 3584c32273cb..07de0170c106 100644
--- a/arch/arm/kernel/ecard.c
+++ b/arch/arm/kernel/ecard.c
@@ -35,7 +35,7 @@
#include <linux/sched.h>
#include <linux/interrupt.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/proc_fs.h>
#include <linux/init.h>
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c
index 3c6899264fbb..ae599d2558cf 100644
--- a/arch/arm/kernel/irq.c
+++ b/arch/arm/kernel/irq.c
@@ -24,7 +24,7 @@
#include <linux/sched.h>
#include <linux/ioport.h>
#include <linux/interrupt.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <linux/smp.h>
#include <linux/init.h>
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index cda0c7866ed8..6b045845f882 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -17,7 +17,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/delay.h>
#include <linux/reboot.h>
diff --git a/arch/arm/kernel/sys_arm.c b/arch/arm/kernel/sys_arm.c
index 36bbf3ac87cc..16b8e59eaa97 100644
--- a/arch/arm/kernel/sys_arm.c
+++ b/arch/arm/kernel/sys_arm.c
@@ -14,7 +14,7 @@
*/
#include <linux/errno.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/sem.h>
#include <linux/msg.h>
diff --git a/arch/i386/defconfig b/arch/i386/defconfig
index 05a2e37252c9..1d03b28f6730 100644
--- a/arch/i386/defconfig
+++ b/arch/i386/defconfig
@@ -162,6 +162,11 @@ CONFIG_IP_MULTICAST=y
# CONFIG_BRIDGE is not set
#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
# Telephony Support
#
# CONFIG_PHONE is not set
@@ -628,6 +633,7 @@ CONFIG_SOUND=y
CONFIG_SOUND_ES1371=y
# CONFIG_SOUND_ESSSOLO1 is not set
# CONFIG_SOUND_MAESTRO is not set
+# CONFIG_SOUND_MAESTRO3 is not set
# CONFIG_SOUND_SONICVIBES is not set
# CONFIG_SOUND_TRIDENT is not set
# CONFIG_SOUND_MSNDCLAS is not set
diff --git a/arch/i386/kernel/apm.c b/arch/i386/kernel/apm.c
index 9703e33044c4..4e1ee2f8308b 100644
--- a/arch/i386/kernel/apm.c
+++ b/arch/i386/kernel/apm.c
@@ -176,7 +176,7 @@
#include <linux/stddef.h>
#include <linux/timer.h>
#include <linux/fcntl.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/proc_fs.h>
#include <linux/miscdevice.h>
diff --git a/arch/i386/kernel/i8259.c b/arch/i386/kernel/i8259.c
index 570614282197..ce8bc87372ac 100644
--- a/arch/i386/kernel/i8259.c
+++ b/arch/i386/kernel/i8259.c
@@ -6,7 +6,7 @@
#include <linux/ioport.h>
#include <linux/interrupt.h>
#include <linux/timex.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <linux/smp_lock.h>
#include <linux/init.h>
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c
index b17f499b4ab5..e7fe3957bcea 100644
--- a/arch/i386/kernel/io_apic.c
+++ b/arch/i386/kernel/io_apic.c
@@ -1509,15 +1509,16 @@ static inline void check_timer(void)
* - IRQ2 is the cascade IRQ, and cannot be a io-apic IRQ.
* Linux doesn't really care, as it's not actually used
* for any interrupt handling anyway.
- * - IRQ13 is the FPU error IRQ, and may be connected
- * directly from the FPU to the old PIC. Linux doesn't
- * really care, because Linux doesn't want to use IRQ13
- * anyway (exception 16 is the proper FPU error signal)
+ * - There used to be IRQ13 here as well, but all
+ * MPS-compliant must not use it for FPU coupling and we
+ * want to use exception 16 anyway. And there are
+ * systems who connect it to an I/O APIC for other uses.
+ * Thus we don't mark it special any longer.
*
* Additionally, something is definitely wrong with irq9
* on PIIX4 boards.
*/
-#define PIC_IRQS ((1<<2)|(1<<13))
+#define PIC_IRQS (1<<2)
void __init setup_IO_APIC(void)
{
diff --git a/arch/i386/kernel/irq.c b/arch/i386/kernel/irq.c
index cf68787873d0..2c935207ac7b 100644
--- a/arch/i386/kernel/irq.c
+++ b/arch/i386/kernel/irq.c
@@ -25,7 +25,7 @@
#include <linux/ioport.h>
#include <linux/interrupt.h>
#include <linux/timex.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <linux/smp_lock.h>
#include <linux/init.h>
@@ -312,6 +312,7 @@ static inline void get_irqlock(int cpu)
/* Uhhuh.. Somebody else got it. Wait.. */
do {
do {
+ rep_nop();
} while (test_bit(0,&global_irq_lock));
} while (test_and_set_bit(0,&global_irq_lock));
}
diff --git a/arch/i386/kernel/microcode.c b/arch/i386/kernel/microcode.c
index f0a88c20e7f3..0bc04116dbc7 100644
--- a/arch/i386/kernel/microcode.c
+++ b/arch/i386/kernel/microcode.c
@@ -52,7 +52,7 @@
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/miscdevice.h>
#include <linux/devfs_fs_kernel.h>
diff --git a/arch/i386/kernel/mtrr.c b/arch/i386/kernel/mtrr.c
index 60764e3cd717..7d85ce2409b8 100644
--- a/arch/i386/kernel/mtrr.c
+++ b/arch/i386/kernel/mtrr.c
@@ -241,7 +241,7 @@
#include <linux/kernel.h>
#include <linux/wait.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/delay.h>
#include <linux/fs.h>
diff --git a/arch/i386/kernel/pci-irq.c b/arch/i386/kernel/pci-irq.c
index 8281e3f8272d..bc1dd9c7eb86 100644
--- a/arch/i386/kernel/pci-irq.c
+++ b/arch/i386/kernel/pci-irq.c
@@ -9,7 +9,7 @@
#include <linux/kernel.h>
#include <linux/pci.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
diff --git a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c
index 35f11f20fbcf..65f51796605a 100644
--- a/arch/i386/kernel/process.c
+++ b/arch/i386/kernel/process.c
@@ -23,7 +23,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/user.h>
#include <linux/a.out.h>
diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c
index 2c3f61f7fc36..528aa69a22a3 100644
--- a/arch/i386/kernel/setup.c
+++ b/arch/i386/kernel/setup.c
@@ -71,7 +71,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/tty.h>
diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c
index aab31e8393de..6a34ec852035 100644
--- a/arch/i386/kernel/smpboot.c
+++ b/arch/i386/kernel/smpboot.c
@@ -389,6 +389,7 @@ void __init smp_callin(void)
*/
if (test_bit(cpuid, &cpu_callout_map))
break;
+ rep_nop();
}
if (!time_before(jiffies, timeout)) {
diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c
index 7c02813afc8c..0a809978e6aa 100644
--- a/arch/i386/kernel/traps.c
+++ b/arch/i386/kernel/traps.c
@@ -127,6 +127,11 @@ void show_trace(unsigned long * stack)
printk("\n");
}
+void show_trace_task(struct task_struct *tsk)
+{
+ show_trace(tsk->thread.esp);
+}
+
void show_stack(unsigned long * esp)
{
unsigned long *stack;
diff --git a/arch/i386/kernel/visws_apic.c b/arch/i386/kernel/visws_apic.c
index 017b8eb5844d..995d0cdcd684 100644
--- a/arch/i386/kernel/visws_apic.c
+++ b/arch/i386/kernel/visws_apic.c
@@ -20,7 +20,7 @@
#include <linux/ioport.h>
#include <linux/interrupt.h>
#include <linux/timex.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <linux/smp.h>
#include <linux/smp_lock.h>
diff --git a/arch/ia64/ia32/sys_ia32.c b/arch/ia64/ia32/sys_ia32.c
index 25007aa43f92..555c6097e82d 100644
--- a/arch/ia64/ia32/sys_ia32.c
+++ b/arch/ia64/ia32/sys_ia32.c
@@ -31,7 +31,7 @@
#include <linux/msg.h>
#include <linux/mm.h>
#include <linux/shm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/uio.h>
#include <linux/nfs_fs.h>
#include <linux/smb_fs.h>
diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c
index ab8961a54be7..cf2cbbb45d20 100644
--- a/arch/ia64/kernel/irq.c
+++ b/arch/ia64/kernel/irq.c
@@ -25,7 +25,7 @@
#include <linux/ioport.h>
#include <linux/interrupt.h>
#include <linux/timex.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <linux/smp_lock.h>
#include <linux/init.h>
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c
index 155ee66b7525..e4b8e8980d81 100644
--- a/arch/ia64/kernel/irq_ia64.c
+++ b/arch/ia64/kernel/irq_ia64.c
@@ -20,7 +20,7 @@
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/kernel_stat.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ptrace.h>
#include <linux/random.h> /* for rand_initialize_irq() */
#include <linux/signal.h>
diff --git a/arch/ia64/kernel/pci.c b/arch/ia64/kernel/pci.c
index 37dbf811aa34..91e11dc513c2 100644
--- a/arch/ia64/kernel/pci.c
+++ b/arch/ia64/kernel/pci.c
@@ -10,7 +10,7 @@
#include <linux/pci.h>
#include <linux/init.h>
#include <linux/ioport.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/spinlock.h>
diff --git a/arch/m68k/atari/hades-pci.c b/arch/m68k/atari/hades-pci.c
index 2c82e4a7b15d..2ac024b5f277 100644
--- a/arch/m68k/atari/hades-pci.c
+++ b/arch/m68k/atari/hades-pci.c
@@ -17,7 +17,7 @@
#if defined(CONFIG_PCI) && defined(CONFIG_HADES)
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/pci.h>
diff --git a/arch/m68k/atari/stram.c b/arch/m68k/atari/stram.c
index b4a797f2e58c..b7b7b955327b 100644
--- a/arch/m68k/atari/stram.c
+++ b/arch/m68k/atari/stram.c
@@ -16,7 +16,7 @@
#include <linux/major.h>
#include <linux/init.h>
#include <linux/swap.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/pagemap.h>
#include <linux/shm.h>
diff --git a/arch/m68k/bvme6000/rtc.c b/arch/m68k/bvme6000/rtc.c
index 263cdaff7c15..23f9a9f1a61e 100644
--- a/arch/m68k/bvme6000/rtc.c
+++ b/arch/m68k/bvme6000/rtc.c
@@ -9,7 +9,7 @@
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/miscdevice.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/fcntl.h>
#include <linux/init.h>
diff --git a/arch/m68k/kernel/bios32.c b/arch/m68k/kernel/bios32.c
index c3b5dacbae94..d9cf9d9b803f 100644
--- a/arch/m68k/kernel/bios32.c
+++ b/arch/m68k/kernel/bios32.c
@@ -26,7 +26,7 @@
*/
#include <linux/pci.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <asm/io.h>
diff --git a/arch/m68k/kernel/process.c b/arch/m68k/kernel/process.c
index 6934e4168a4a..7fd40aaa4a05 100644
--- a/arch/m68k/kernel/process.c
+++ b/arch/m68k/kernel/process.c
@@ -20,7 +20,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/reboot.h>
diff --git a/arch/m68k/mac/misc.c b/arch/m68k/mac/misc.c
index d6065716af28..afc769d42644 100644
--- a/arch/m68k/mac/misc.c
+++ b/arch/m68k/mac/misc.c
@@ -10,7 +10,7 @@
#include <linux/kernel.h>
#include <linux/delay.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/time.h>
#include <linux/kd.h>
#include <linux/mm.h>
diff --git a/arch/m68k/mm/kmap.c b/arch/m68k/mm/kmap.c
index 55a4554234e3..da23f36ec6a5 100644
--- a/arch/m68k/mm/kmap.c
+++ b/arch/m68k/mm/kmap.c
@@ -12,7 +12,7 @@
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/types.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <asm/setup.h>
diff --git a/arch/m68k/mm/memory.c b/arch/m68k/mm/memory.c
index a3c4f38c5aef..164c5cc72cc5 100644
--- a/arch/m68k/mm/memory.c
+++ b/arch/m68k/mm/memory.c
@@ -9,7 +9,7 @@
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/types.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/pagemap.h>
diff --git a/arch/m68k/mvme16x/rtc.c b/arch/m68k/mvme16x/rtc.c
index 6776216292e7..0c118ceb0003 100644
--- a/arch/m68k/mvme16x/rtc.c
+++ b/arch/m68k/mvme16x/rtc.c
@@ -9,7 +9,7 @@
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/miscdevice.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/fcntl.h>
#include <linux/init.h>
diff --git a/arch/mips/baget/irq.c b/arch/mips/baget/irq.c
index 03d68ee177fc..4445824cb4ff 100644
--- a/arch/mips/baget/irq.c
+++ b/arch/mips/baget/irq.c
@@ -16,7 +16,7 @@
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/timex.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <linux/delay.h>
diff --git a/arch/mips/baget/vacserial.c b/arch/mips/baget/vacserial.c
index d4200a341671..1e50fdacb524 100644
--- a/arch/mips/baget/vacserial.c
+++ b/arch/mips/baget/vacserial.c
@@ -56,7 +56,7 @@
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/delay.h>
#ifdef CONFIG_SERIAL_CONSOLE
diff --git a/arch/mips/dec/irq.c b/arch/mips/dec/irq.c
index 91e1ce463e50..2faa74b541c4 100644
--- a/arch/mips/dec/irq.c
+++ b/arch/mips/dec/irq.c
@@ -15,7 +15,7 @@
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/timex.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <asm/bitops.h>
diff --git a/arch/mips/kernel/irixelf.c b/arch/mips/kernel/irixelf.c
index 5f63b0910a32..8daf876c1e74 100644
--- a/arch/mips/kernel/irixelf.c
+++ b/arch/mips/kernel/irixelf.c
@@ -24,7 +24,7 @@
#include <linux/file.h>
#include <linux/fcntl.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/shm.h>
#include <linux/personality.h>
#include <linux/elfcore.h>
diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c
index fcb7a632f940..f6b1cecce95f 100644
--- a/arch/mips/kernel/irq.c
+++ b/arch/mips/kernel/irq.c
@@ -19,7 +19,7 @@
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/timex.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <asm/bitops.h>
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index 6a1a6c3261f3..117403eb4ec2 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -14,7 +14,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mman.h>
#include <linux/sys.h>
#include <linux/user.h>
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c
index 99f254b69f98..6023e2e55b70 100644
--- a/arch/mips/kernel/setup.c
+++ b/arch/mips/kernel/setup.c
@@ -19,7 +19,7 @@
#include <linux/string.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/utsname.h>
#include <linux/a.out.h>
diff --git a/arch/mips/kernel/sysirix.c b/arch/mips/kernel/sysirix.c
index d9d73470a692..6df76efc705c 100644
--- a/arch/mips/kernel/sysirix.c
+++ b/arch/mips/kernel/sysirix.c
@@ -10,7 +10,7 @@
#include <linux/pagemap.h>
#include <linux/mm.h>
#include <linux/mman.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/swap.h>
#include <linux/errno.h>
#include <linux/timex.h>
diff --git a/arch/mips/orion/irq.c b/arch/mips/orion/irq.c
index 1721b47aeb1a..d92ab73aaf11 100644
--- a/arch/mips/orion/irq.c
+++ b/arch/mips/orion/irq.c
@@ -12,7 +12,7 @@
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/timex.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <asm/bitops.h>
diff --git a/arch/mips/orion/misc.c b/arch/mips/orion/misc.c
index 0d88810581bf..e5cce6f58b88 100644
--- a/arch/mips/orion/misc.c
+++ b/arch/mips/orion/misc.c
@@ -15,7 +15,7 @@
#include <linux/string.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/utsname.h>
#include <linux/a.out.h>
diff --git a/arch/mips/orion/setup.c b/arch/mips/orion/setup.c
index c247d6b528ae..0ff17c7bee9f 100644
--- a/arch/mips/orion/setup.c
+++ b/arch/mips/orion/setup.c
@@ -14,7 +14,7 @@
#include <linux/string.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/utsname.h>
#include <linux/a.out.h>
diff --git a/arch/mips/sgi/kernel/indy_int.c b/arch/mips/sgi/kernel/indy_int.c
index 2e104bf79b5b..be38a0b4d854 100644
--- a/arch/mips/sgi/kernel/indy_int.c
+++ b/arch/mips/sgi/kernel/indy_int.c
@@ -19,7 +19,7 @@
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/timex.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <linux/smp.h>
#include <linux/smp_lock.h>
diff --git a/arch/mips64/kernel/process.c b/arch/mips64/kernel/process.c
index b45f23a3663c..7060ce7684d5 100644
--- a/arch/mips64/kernel/process.c
+++ b/arch/mips64/kernel/process.c
@@ -13,7 +13,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mman.h>
#include <linux/sys.h>
#include <linux/user.h>
diff --git a/arch/mips64/kernel/setup.c b/arch/mips64/kernel/setup.c
index f30f6ba832cc..c9f0bad3ee2f 100644
--- a/arch/mips64/kernel/setup.c
+++ b/arch/mips64/kernel/setup.c
@@ -18,7 +18,7 @@
#include <linux/string.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/utsname.h>
#include <linux/a.out.h>
diff --git a/arch/mips64/sgi-ip22/ip22-int.c b/arch/mips64/sgi-ip22/ip22-int.c
index 70a5fdf3aa7d..774b4fc33330 100644
--- a/arch/mips64/sgi-ip22/ip22-int.c
+++ b/arch/mips64/sgi-ip22/ip22-int.c
@@ -17,7 +17,7 @@
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/timex.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <linux/smp.h>
#include <linux/smp_lock.h>
diff --git a/arch/mips64/sgi-ip27/ip27-irq.c b/arch/mips64/sgi-ip27/ip27-irq.c
index a9a7b7153eed..d571aece1015 100644
--- a/arch/mips64/sgi-ip27/ip27-irq.c
+++ b/arch/mips64/sgi-ip27/ip27-irq.c
@@ -13,7 +13,7 @@
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/timex.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <linux/smp_lock.h>
#include <linux/kernel_stat.h>
diff --git a/arch/parisc/kernel/ccio-dma.c b/arch/parisc/kernel/ccio-dma.c
index c8f72c813037..1df06d59d206 100644
--- a/arch/parisc/kernel/ccio-dma.c
+++ b/arch/parisc/kernel/ccio-dma.c
@@ -36,7 +36,7 @@
#include <linux/init.h>
#include <linux/mm.h>
#include <linux/spinlock.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/pci.h>
diff --git a/arch/parisc/kernel/iosapic.c b/arch/parisc/kernel/iosapic.c
index 688cbf9bb6b5..917fa76eb5e3 100644
--- a/arch/parisc/kernel/iosapic.c
+++ b/arch/parisc/kernel/iosapic.c
@@ -162,7 +162,7 @@
#include <linux/spinlock.h>
#include <linux/pci.h> /* pci cfg accessor functions */
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/interrupt.h> /* irqaction */
#include <linux/irq.h> /* irq_region support */
diff --git a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c
index aec36f7ccc00..b3914a1b19dc 100644
--- a/arch/parisc/kernel/irq.c
+++ b/arch/parisc/kernel/irq.c
@@ -35,7 +35,7 @@
#include <linux/types.h>
#include <linux/ioport.h>
#include <linux/timex.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
diff --git a/arch/parisc/kernel/lba_pci.c b/arch/parisc/kernel/lba_pci.c
index 6096d01531a2..490b4659bbc4 100644
--- a/arch/parisc/kernel/lba_pci.c
+++ b/arch/parisc/kernel/lba_pci.c
@@ -36,7 +36,7 @@
#include <linux/init.h> /* for __init and __devinit */
#include <linux/pci.h>
#include <linux/ioport.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <asm/byteorder.h>
diff --git a/arch/parisc/kernel/pci-dma.c b/arch/parisc/kernel/pci-dma.c
index 88a9ddc775f2..f885584f51df 100644
--- a/arch/parisc/kernel/pci-dma.c
+++ b/arch/parisc/kernel/pci-dma.c
@@ -26,7 +26,7 @@
#include <linux/pci.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <asm/uaccess.h>
diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c
index a8d7a707e88b..d699f5dab009 100644
--- a/arch/parisc/kernel/process.c
+++ b/arch/parisc/kernel/process.c
@@ -19,7 +19,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/interrupt.h>
#include <linux/reboot.h>
diff --git a/arch/parisc/kernel/sba_iommu.c b/arch/parisc/kernel/sba_iommu.c
index b7b5414788c0..701bf38cf1c3 100644
--- a/arch/parisc/kernel/sba_iommu.c
+++ b/arch/parisc/kernel/sba_iommu.c
@@ -23,7 +23,7 @@
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/spinlock.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/mm.h>
diff --git a/arch/parisc/kernel/setup.c b/arch/parisc/kernel/setup.c
index 16a35df3081f..a14b5ac62215 100644
--- a/arch/parisc/kernel/setup.c
+++ b/arch/parisc/kernel/setup.c
@@ -28,7 +28,7 @@
#include <linux/errno.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/ptrace.h>
#include <linux/sched.h>
diff --git a/arch/parisc/mm/kmap.c b/arch/parisc/mm/kmap.c
index 686d540d9d3f..4bd5dd4b439a 100644
--- a/arch/parisc/mm/kmap.c
+++ b/arch/parisc/mm/kmap.c
@@ -7,7 +7,7 @@
#include <linux/string.h>
#include <linux/pci.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <asm/uaccess.h>
diff --git a/arch/ppc/8260_io/enet.c b/arch/ppc/8260_io/enet.c
index 77b0eb279387..95d58d523181 100644
--- a/arch/ppc/8260_io/enet.c
+++ b/arch/ppc/8260_io/enet.c
@@ -30,7 +30,7 @@
#include <linux/ptrace.h>
#include <linux/errno.h>
#include <linux/ioport.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/pci.h>
#include <linux/init.h>
diff --git a/arch/ppc/8260_io/fcc_enet.c b/arch/ppc/8260_io/fcc_enet.c
index c8c31bd4241f..d06f47c6e866 100644
--- a/arch/ppc/8260_io/fcc_enet.c
+++ b/arch/ppc/8260_io/fcc_enet.c
@@ -23,7 +23,7 @@
#include <linux/ptrace.h>
#include <linux/errno.h>
#include <linux/ioport.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/pci.h>
#include <linux/init.h>
diff --git a/arch/ppc/8260_io/uart.c b/arch/ppc/8260_io/uart.c
index e6e223b61304..ad61c9b7fde7 100644
--- a/arch/ppc/8260_io/uart.c
+++ b/arch/ppc/8260_io/uart.c
@@ -38,7 +38,7 @@
#include <linux/fcntl.h>
#include <linux/ptrace.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <asm/uaccess.h>
diff --git a/arch/ppc/8xx_io/enet.c b/arch/ppc/8xx_io/enet.c
index 01eb2758b672..39628da04cd2 100644
--- a/arch/ppc/8xx_io/enet.c
+++ b/arch/ppc/8xx_io/enet.c
@@ -29,7 +29,7 @@
#include <linux/ptrace.h>
#include <linux/errno.h>
#include <linux/ioport.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/pci.h>
#include <linux/init.h>
diff --git a/arch/ppc/8xx_io/fec.c b/arch/ppc/8xx_io/fec.c
index 6e5e9e686f2c..db3db21fb1f5 100644
--- a/arch/ppc/8xx_io/fec.c
+++ b/arch/ppc/8xx_io/fec.c
@@ -33,7 +33,7 @@
#include <linux/ptrace.h>
#include <linux/errno.h>
#include <linux/ioport.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/pci.h>
#include <linux/init.h>
diff --git a/arch/ppc/8xx_io/uart.c b/arch/ppc/8xx_io/uart.c
index 598e13ac0625..4688d57a8cce 100644
--- a/arch/ppc/8xx_io/uart.c
+++ b/arch/ppc/8xx_io/uart.c
@@ -34,7 +34,7 @@
#include <linux/fcntl.h>
#include <linux/ptrace.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <asm/uaccess.h>
diff --git a/arch/ppc/kernel/checks.c b/arch/ppc/kernel/checks.c
index 9bb8e690ee4a..41e35f878e5e 100644
--- a/arch/ppc/kernel/checks.c
+++ b/arch/ppc/kernel/checks.c
@@ -7,7 +7,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/a.out.h>
diff --git a/arch/ppc/kernel/idle.c b/arch/ppc/kernel/idle.c
index 6ca61697957b..5aaabccfa5c2 100644
--- a/arch/ppc/kernel/idle.c
+++ b/arch/ppc/kernel/idle.c
@@ -21,7 +21,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/pgtable.h>
#include <asm/uaccess.h>
diff --git a/arch/ppc/kernel/irq.c b/arch/ppc/kernel/irq.c
index 02ff4d964ad0..279bccf0a881 100644
--- a/arch/ppc/kernel/irq.c
+++ b/arch/ppc/kernel/irq.c
@@ -40,7 +40,7 @@
#include <linux/timex.h>
#include <linux/config.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pci.h>
#include <linux/delay.h>
#include <linux/irq.h>
diff --git a/arch/ppc/kernel/m8260_setup.c b/arch/ppc/kernel/m8260_setup.c
index a55f5235dc56..91114e4599f5 100644
--- a/arch/ppc/kernel/m8260_setup.c
+++ b/arch/ppc/kernel/m8260_setup.c
@@ -22,7 +22,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/tty.h>
diff --git a/arch/ppc/kernel/m8xx_setup.c b/arch/ppc/kernel/m8xx_setup.c
index f9813fa75137..fb585641c4d9 100644
--- a/arch/ppc/kernel/m8xx_setup.c
+++ b/arch/ppc/kernel/m8xx_setup.c
@@ -22,7 +22,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/tty.h>
diff --git a/arch/ppc/kernel/pmac_setup.c b/arch/ppc/kernel/pmac_setup.c
index e7be1114e95a..839f66d809a1 100644
--- a/arch/ppc/kernel/pmac_setup.c
+++ b/arch/ppc/kernel/pmac_setup.c
@@ -30,7 +30,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/tty.h>
diff --git a/arch/ppc/kernel/prep_nvram.c b/arch/ppc/kernel/prep_nvram.c
index 3d34a853f678..770808c6eb66 100644
--- a/arch/ppc/kernel/prep_nvram.c
+++ b/arch/ppc/kernel/prep_nvram.c
@@ -6,7 +6,7 @@
*/
#include <linux/init.h>
#include <linux/delay.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <asm/init.h>
diff --git a/arch/ppc/kernel/prep_setup.c b/arch/ppc/kernel/prep_setup.c
index 64ad519cb604..0c23c51acbf6 100644
--- a/arch/ppc/kernel/prep_setup.c
+++ b/arch/ppc/kernel/prep_setup.c
@@ -19,7 +19,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/tty.h>
diff --git a/arch/ppc/kernel/process.c b/arch/ppc/kernel/process.c
index c4c76adecad1..259481bcdc0e 100644
--- a/arch/ppc/kernel/process.c
+++ b/arch/ppc/kernel/process.c
@@ -29,7 +29,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/elf.h>
#include <linux/init.h>
diff --git a/arch/ppc/kernel/residual.c b/arch/ppc/kernel/residual.c
index 1c4bdfbd82b4..7aa75dbbbe20 100644
--- a/arch/ppc/kernel/residual.c
+++ b/arch/ppc/kernel/residual.c
@@ -30,7 +30,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/tty.h>
diff --git a/arch/ppc/kernel/softemu8xx.c b/arch/ppc/kernel/softemu8xx.c
index a97c272d3cc6..26a8fe16568b 100644
--- a/arch/ppc/kernel/softemu8xx.c
+++ b/arch/ppc/kernel/softemu8xx.c
@@ -21,7 +21,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/interrupt.h>
diff --git a/arch/ppc/kernel/traps.c b/arch/ppc/kernel/traps.c
index 8bd9ebded554..0269254cf11f 100644
--- a/arch/ppc/kernel/traps.c
+++ b/arch/ppc/kernel/traps.c
@@ -23,7 +23,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/interrupt.h>
diff --git a/arch/s390/kernel/irq.c b/arch/s390/kernel/irq.c
index ba513325a429..c63b6727b5ea 100644
--- a/arch/s390/kernel/irq.c
+++ b/arch/s390/kernel/irq.c
@@ -20,7 +20,7 @@
#include <linux/ioport.h>
#include <linux/interrupt.h>
#include <linux/timex.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/random.h>
#include <linux/smp.h>
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
index 2fc6d08fa402..1457d8cfb605 100644
--- a/arch/s390/kernel/process.c
+++ b/arch/s390/kernel/process.c
@@ -28,7 +28,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/user.h>
#include <linux/a.out.h>
diff --git a/arch/s390/kernel/s390io.c b/arch/s390/kernel/s390io.c
index b1db16707106..9477ad5677a0 100644
--- a/arch/s390/kernel/s390io.c
+++ b/arch/s390/kernel/s390io.c
@@ -14,7 +14,7 @@
#include <linux/signal.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/smp.h>
#include <linux/tasks.h>
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
index 109af4e76b1a..db8f1155eca1 100644
--- a/arch/s390/kernel/setup.c
+++ b/arch/s390/kernel/setup.c
@@ -21,7 +21,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/tty.h>
diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c
index 200148320965..615d46148df1 100644
--- a/arch/sh/kernel/irq.c
+++ b/arch/sh/kernel/irq.c
@@ -22,7 +22,7 @@
#include <linux/ioport.h>
#include <linux/interrupt.h>
#include <linux/timex.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <linux/smp.h>
#include <linux/smp_lock.h>
diff --git a/arch/sh/kernel/process.c b/arch/sh/kernel/process.c
index 1ce22f0fd3f7..a7810c9144dc 100644
--- a/arch/sh/kernel/process.c
+++ b/arch/sh/kernel/process.c
@@ -24,7 +24,7 @@
#include <linux/smp_lock.h>
#include <linux/stddef.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/user.h>
#include <linux/a.out.h>
diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c
index b6fb1e9a8c90..7b5d77e901fe 100644
--- a/arch/sh/kernel/setup.c
+++ b/arch/sh/kernel/setup.c
@@ -17,7 +17,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/tty.h>
diff --git a/arch/sparc/kernel/ebus.c b/arch/sparc/kernel/ebus.c
index 00c465b10fda..4eb796b0af13 100644
--- a/arch/sparc/kernel/ebus.c
+++ b/arch/sparc/kernel/ebus.c
@@ -11,7 +11,7 @@
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <asm/system.h>
diff --git a/arch/sparc/kernel/ioport.c b/arch/sparc/kernel/ioport.c
index 41ef9737ea4e..c771cfb19506 100644
--- a/arch/sparc/kernel/ioport.c
+++ b/arch/sparc/kernel/ioport.c
@@ -32,7 +32,7 @@
#include <linux/types.h>
#include <linux/ioport.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pci.h> /* struct pci_dev */
#include <linux/proc_fs.h>
diff --git a/arch/sparc/kernel/irq.c b/arch/sparc/kernel/irq.c
index eaa7fc4a3e0a..420b2fcbfb01 100644
--- a/arch/sparc/kernel/irq.c
+++ b/arch/sparc/kernel/irq.c
@@ -19,7 +19,7 @@
#include <linux/signal.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <linux/init.h>
#include <linux/smp.h>
diff --git a/arch/sparc/kernel/pcic.c b/arch/sparc/kernel/pcic.c
index 9bc82a518243..76c25dc54790 100644
--- a/arch/sparc/kernel/pcic.c
+++ b/arch/sparc/kernel/pcic.c
@@ -15,7 +15,7 @@
#include <linux/types.h>
#include <linux/init.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/ebus.h>
#include <asm/sbus.h> /* for sanity check... */
diff --git a/arch/sparc/kernel/process.c b/arch/sparc/kernel/process.c
index 878147763d51..f222b7546413 100644
--- a/arch/sparc/kernel/process.c
+++ b/arch/sparc/kernel/process.c
@@ -19,7 +19,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/config.h>
diff --git a/arch/sparc/kernel/setup.c b/arch/sparc/kernel/setup.c
index aef0869e028f..f6c73cd28aa9 100644
--- a/arch/sparc/kernel/setup.c
+++ b/arch/sparc/kernel/setup.c
@@ -12,7 +12,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/smp.h>
#include <linux/user.h>
#include <linux/a.out.h>
diff --git a/arch/sparc/kernel/sun4c_irq.c b/arch/sparc/kernel/sun4c_irq.c
index 3f33ca265625..90fbfd8195e1 100644
--- a/arch/sparc/kernel/sun4c_irq.c
+++ b/arch/sparc/kernel/sun4c_irq.c
@@ -17,7 +17,7 @@
#include <linux/signal.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <asm/ptrace.h>
diff --git a/arch/sparc/kernel/sun4d_irq.c b/arch/sparc/kernel/sun4d_irq.c
index 4ce99b06b2b0..55b936eb1c61 100644
--- a/arch/sparc/kernel/sun4d_irq.c
+++ b/arch/sparc/kernel/sun4d_irq.c
@@ -14,7 +14,7 @@
#include <linux/signal.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <linux/init.h>
#include <linux/smp.h>
diff --git a/arch/sparc/kernel/sun4d_smp.c b/arch/sparc/kernel/sun4d_smp.c
index d14dbc2acdfb..098b2e58dc18 100644
--- a/arch/sparc/kernel/sun4d_smp.c
+++ b/arch/sparc/kernel/sun4d_smp.c
@@ -287,11 +287,11 @@ void __init smp4d_boot_cpus(void)
smp_highest_cpu = i;
}
}
- SMP_PRINTK(("Total of %d Processors activated (%lu.%02lu BogoMIPS).\n", cpucount + 1, (bogosum + 2500)/500000, ((bogosum + 2500)/5000)%100));
+ SMP_PRINTK(("Total of %d Processors activated (%lu.%02lu BogoMIPS).\n", cpucount + 1, bogosum/(500000/HZ), (bogosum/(5000/HZ))%100));
printk("Total of %d Processors activated (%lu.%02lu BogoMIPS).\n",
cpucount + 1,
- (bogosum + 2500)/500000,
- ((bogosum + 2500)/5000)%100);
+ bogosum/(500000/HZ),
+ (bogosum/(5000/HZ))%100);
smp_activated = 1;
smp_num_cpus = cpucount + 1;
}
diff --git a/arch/sparc/kernel/sun4m_irq.c b/arch/sparc/kernel/sun4m_irq.c
index 2c79caf33d69..0d0477403bbb 100644
--- a/arch/sparc/kernel/sun4m_irq.c
+++ b/arch/sparc/kernel/sun4m_irq.c
@@ -18,7 +18,7 @@
#include <linux/sched.h>
#include <linux/smp.h>
#include <linux/interrupt.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/ioport.h>
diff --git a/arch/sparc/kernel/sun4m_smp.c b/arch/sparc/kernel/sun4m_smp.c
index 230a95e6bcf7..04e3d65fa38a 100644
--- a/arch/sparc/kernel/sun4m_smp.c
+++ b/arch/sparc/kernel/sun4m_smp.c
@@ -256,8 +256,8 @@ void __init smp4m_boot_cpus(void)
}
printk("Total of %d Processors activated (%lu.%02lu BogoMIPS).\n",
cpucount + 1,
- (bogosum + 2500)/500000,
- ((bogosum + 2500)/5000)%100);
+ bogosum/(500000/HZ),
+ (bogosum/(5000/HZ))%100);
smp_activated = 1;
smp_num_cpus = cpucount + 1;
}
diff --git a/arch/sparc/kernel/sys_sunos.c b/arch/sparc/kernel/sys_sunos.c
index 24ae3829d313..18d5cf7a4562 100644
--- a/arch/sparc/kernel/sys_sunos.c
+++ b/arch/sparc/kernel/sys_sunos.c
@@ -28,7 +28,7 @@
#include <linux/utsname.h>
#include <linux/major.h>
#include <linux/stat.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pagemap.h>
#include <linux/errno.h>
#include <linux/smp.h>
diff --git a/arch/sparc/mm/io-unit.c b/arch/sparc/mm/io-unit.c
index 1679384d6bf1..f0928b78ca8d 100644
--- a/arch/sparc/mm/io-unit.c
+++ b/arch/sparc/mm/io-unit.c
@@ -7,7 +7,7 @@
#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/spinlock.h>
#include <asm/scatterlist.h>
#include <asm/pgalloc.h>
diff --git a/arch/sparc/mm/iommu.c b/arch/sparc/mm/iommu.c
index 058fdd0d1781..b05b79fa6d40 100644
--- a/arch/sparc/mm/iommu.c
+++ b/arch/sparc/mm/iommu.c
@@ -11,7 +11,7 @@
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/scatterlist.h>
#include <asm/pgalloc.h>
#include <asm/pgtable.h>
diff --git a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c
index 0dba7d0a3ee3..544cd7fb12cb 100644
--- a/arch/sparc/mm/srmmu.c
+++ b/arch/sparc/mm/srmmu.c
@@ -11,7 +11,7 @@
#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/pagemap.h>
#include <linux/init.h>
diff --git a/arch/sparc64/kernel/binfmt_aout32.c b/arch/sparc64/kernel/binfmt_aout32.c
index b066b8b964fd..bda2fb6a536e 100644
--- a/arch/sparc64/kernel/binfmt_aout32.c
+++ b/arch/sparc64/kernel/binfmt_aout32.c
@@ -23,7 +23,7 @@
#include <linux/fcntl.h>
#include <linux/ptrace.h>
#include <linux/user.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/binfmts.h>
#include <linux/personality.h>
#include <linux/init.h>
diff --git a/arch/sparc64/kernel/ebus.c b/arch/sparc64/kernel/ebus.c
index e175fac27543..555556f0efe2 100644
--- a/arch/sparc64/kernel/ebus.c
+++ b/arch/sparc64/kernel/ebus.c
@@ -9,7 +9,7 @@
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <asm/system.h>
diff --git a/arch/sparc64/kernel/ioctl32.c b/arch/sparc64/kernel/ioctl32.c
index 67c1ec6d0651..1855a8e3a655 100644
--- a/arch/sparc64/kernel/ioctl32.c
+++ b/arch/sparc64/kernel/ioctl32.c
@@ -1,4 +1,4 @@
-/* $Id: ioctl32.c,v 1.105 2001/01/18 04:47:44 davem Exp $
+/* $Id: ioctl32.c,v 1.106 2001/01/30 01:04:28 davem Exp $
* ioctl32.c: Conversion between 32bit and 64bit native ioctls.
*
* Copyright (C) 1997-2000 Jakub Jelinek (jakub@redhat.com)
@@ -16,7 +16,7 @@
#include <linux/smp_lock.h>
#include <linux/ioctl.h>
#include <linux/if.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/hdreg.h>
#include <linux/raid/md.h>
#include <linux/kd.h>
@@ -3770,7 +3770,7 @@ IOCTL_TABLE_END
unsigned int ioctl32_hash_table[1024];
-extern inline unsigned long ioctl32_hash(unsigned long cmd)
+static inline unsigned long ioctl32_hash(unsigned long cmd)
{
return ((cmd >> 6) ^ (cmd >> 4) ^ cmd) & 0x3ff;
}
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c
index 92bd3ed88a98..51a390f38079 100644
--- a/arch/sparc64/kernel/irq.c
+++ b/arch/sparc64/kernel/irq.c
@@ -13,7 +13,7 @@
#include <linux/signal.h>
#include <linux/mm.h>
#include <linux/interrupt.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h> /* XXX ADD add_foo_randomness() calls... -DaveM */
#include <linux/init.h>
#include <linux/delay.h>
diff --git a/arch/sparc64/kernel/pci_common.c b/arch/sparc64/kernel/pci_common.c
index 14473724f06e..ba1abbfa6870 100644
--- a/arch/sparc64/kernel/pci_common.c
+++ b/arch/sparc64/kernel/pci_common.c
@@ -5,7 +5,7 @@
*/
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <asm/pbm.h>
diff --git a/arch/sparc64/kernel/pci_psycho.c b/arch/sparc64/kernel/pci_psycho.c
index fbd7832cdc06..cb9515befafe 100644
--- a/arch/sparc64/kernel/pci_psycho.c
+++ b/arch/sparc64/kernel/pci_psycho.c
@@ -10,7 +10,7 @@
#include <linux/types.h>
#include <linux/pci.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/pbm.h>
#include <asm/iommu.h>
diff --git a/arch/sparc64/kernel/pci_sabre.c b/arch/sparc64/kernel/pci_sabre.c
index ec74a3696ea1..7d84dedc1b88 100644
--- a/arch/sparc64/kernel/pci_sabre.c
+++ b/arch/sparc64/kernel/pci_sabre.c
@@ -10,7 +10,7 @@
#include <linux/types.h>
#include <linux/pci.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/apb.h>
#include <asm/pbm.h>
diff --git a/arch/sparc64/kernel/pci_schizo.c b/arch/sparc64/kernel/pci_schizo.c
index 9299c2531b80..9dc2877f756e 100644
--- a/arch/sparc64/kernel/pci_schizo.c
+++ b/arch/sparc64/kernel/pci_schizo.c
@@ -8,7 +8,7 @@
#include <linux/types.h>
#include <linux/pci.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/pbm.h>
#include <asm/iommu.h>
diff --git a/arch/sparc64/kernel/process.c b/arch/sparc64/kernel/process.c
index 4534ad59b14d..76534da37087 100644
--- a/arch/sparc64/kernel/process.c
+++ b/arch/sparc64/kernel/process.c
@@ -22,7 +22,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/config.h>
diff --git a/arch/sparc64/kernel/sbus.c b/arch/sparc64/kernel/sbus.c
index 7baebc89e86d..c4d2b11e1fd3 100644
--- a/arch/sparc64/kernel/sbus.c
+++ b/arch/sparc64/kernel/sbus.c
@@ -8,7 +8,7 @@
#include <linux/types.h>
#include <linux/mm.h>
#include <linux/spinlock.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <asm/page.h>
diff --git a/arch/sparc64/kernel/setup.c b/arch/sparc64/kernel/setup.c
index 11d29f21f00f..cd14f5026b03 100644
--- a/arch/sparc64/kernel/setup.c
+++ b/arch/sparc64/kernel/setup.c
@@ -12,7 +12,7 @@
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/smp.h>
#include <linux/user.h>
#include <linux/a.out.h>
diff --git a/arch/sparc64/kernel/starfire.c b/arch/sparc64/kernel/starfire.c
index 6899e7c4a12e..5f93db6dd4a8 100644
--- a/arch/sparc64/kernel/starfire.c
+++ b/arch/sparc64/kernel/starfire.c
@@ -6,7 +6,7 @@
*/
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/page.h>
#include <asm/oplib.h>
diff --git a/arch/sparc64/kernel/sys_sparc.c b/arch/sparc64/kernel/sys_sparc.c
index 391979c87720..510617a149ed 100644
--- a/arch/sparc64/kernel/sys_sparc.c
+++ b/arch/sparc64/kernel/sys_sparc.c
@@ -21,7 +21,7 @@
#include <linux/utsname.h>
#include <linux/smp.h>
#include <linux/smp_lock.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ipc.h>
#include <linux/personality.h>
diff --git a/arch/sparc64/kernel/sys_sparc32.c b/arch/sparc64/kernel/sys_sparc32.c
index 184b4169dffb..1d56041cabc4 100644
--- a/arch/sparc64/kernel/sys_sparc32.c
+++ b/arch/sparc64/kernel/sys_sparc32.c
@@ -25,7 +25,7 @@
#include <linux/sem.h>
#include <linux/msg.h>
#include <linux/shm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/uio.h>
#include <linux/nfs_fs.h>
#include <linux/smb_fs.h>
diff --git a/arch/sparc64/kernel/sys_sunos32.c b/arch/sparc64/kernel/sys_sunos32.c
index 58e4704c4015..29fcbc7dae93 100644
--- a/arch/sparc64/kernel/sys_sunos32.c
+++ b/arch/sparc64/kernel/sys_sunos32.c
@@ -27,7 +27,7 @@
#include <linux/utsname.h>
#include <linux/major.h>
#include <linux/stat.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pagemap.h>
#include <linux/errno.h>
#include <linux/smp.h>
diff --git a/arch/sparc64/kernel/traps.c b/arch/sparc64/kernel/traps.c
index 2562df1f333a..cc703d3bcbb0 100644
--- a/arch/sparc64/kernel/traps.c
+++ b/arch/sparc64/kernel/traps.c
@@ -1,4 +1,4 @@
-/* $Id: traps.c,v 1.68 2000/11/22 06:50:37 davem Exp $
+/* $Id: traps.c,v 1.70 2001/02/09 05:46:44 davem Exp $
* arch/sparc64/kernel/traps.c
*
* Copyright (C) 1995,1997 David S. Miller (davem@caip.rutgers.edu)
@@ -639,6 +639,30 @@ void user_instruction_dump (unsigned int *pc)
printk("\n");
}
+void show_trace_task(struct task_struct *tsk)
+{
+ unsigned long pc, fp;
+ unsigned long task_base = (unsigned long)tsk;
+ struct reg_window *rw;
+ int count = 0;
+
+ if (!tsk)
+ return;
+
+ fp = tsk->thread.ksp + STACK_BIAS;
+ do {
+ /* Bogus frame pointer? */
+ if (fp < (task_base + sizeof(struct task_struct)) ||
+ fp >= (task_base + (2 * PAGE_SIZE)))
+ break;
+ rw = (struct reg_window *)fp;
+ pc = rw->ins[7];
+ printk("[%016lx] ", pc);
+ fp = rw->ins[6] + STACK_BIAS;
+ } while (++count < 16);
+ printk("\n");
+}
+
void die_if_kernel(char *str, struct pt_regs *regs)
{
extern void __show_regs(struct pt_regs * regs);
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c
index 2890927567f6..07e26c3d7662 100644
--- a/arch/sparc64/mm/init.c
+++ b/arch/sparc64/mm/init.c
@@ -12,7 +12,7 @@
#include <linux/init.h>
#include <linux/bootmem.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/swap.h>
#include <linux/swapctl.h>
diff --git a/arch/sparc64/mm/modutil.c b/arch/sparc64/mm/modutil.c
index b8e2833f0e8f..cc7ffa733da1 100644
--- a/arch/sparc64/mm/modutil.c
+++ b/arch/sparc64/mm/modutil.c
@@ -5,7 +5,7 @@
* Based upon code written by Linus Torvalds and others.
*/
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <asm/uaccess.h>
diff --git a/arch/sparc64/solaris/fs.c b/arch/sparc64/solaris/fs.c
index e80d6b13fac1..74807f84bd09 100644
--- a/arch/sparc64/solaris/fs.c
+++ b/arch/sparc64/solaris/fs.c
@@ -9,7 +9,7 @@
#include <linux/types.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fs.h>
#include <linux/mm.h>
#include <linux/file.h>
diff --git a/arch/sparc64/solaris/socket.c b/arch/sparc64/solaris/socket.c
index e016e4b1a1ec..f336f0a04e2d 100644
--- a/arch/sparc64/solaris/socket.c
+++ b/arch/sparc64/solaris/socket.c
@@ -10,7 +10,7 @@
#include <linux/types.h>
#include <linux/smp_lock.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/socket.h>
#include <linux/file.h>
diff --git a/arch/sparc64/solaris/socksys.c b/arch/sparc64/solaris/socksys.c
index bf2182381ec3..11eb8d540044 100644
--- a/arch/sparc64/solaris/socksys.c
+++ b/arch/sparc64/solaris/socksys.c
@@ -16,7 +16,7 @@
#include <linux/file.h>
#include <linux/init.h>
#include <linux/poll.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/in.h>
#include <linux/devfs_fs_kernel.h>
diff --git a/drivers/acorn/char/keyb_arc.c b/drivers/acorn/char/keyb_arc.c
index 1105b57bbe18..6220c2f11bd2 100644
--- a/drivers/acorn/char/keyb_arc.c
+++ b/drivers/acorn/char/keyb_arc.c
@@ -19,7 +19,7 @@
#include <linux/tty.h>
#include <linux/tty_flip.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ptrace.h>
#include <linux/signal.h>
#include <linux/timer.h>
diff --git a/drivers/acorn/char/keyb_ps2.c b/drivers/acorn/char/keyb_ps2.c
index d5aa88e969bd..27be184f9117 100644
--- a/drivers/acorn/char/keyb_ps2.c
+++ b/drivers/acorn/char/keyb_ps2.c
@@ -17,7 +17,7 @@
#include <linux/tty.h>
#include <linux/tty_flip.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ptrace.h>
#include <linux/signal.h>
#include <linux/timer.h>
diff --git a/drivers/acorn/char/pcf8583.c b/drivers/acorn/char/pcf8583.c
index ffc9308dde84..4abb030700c4 100644
--- a/drivers/acorn/char/pcf8583.c
+++ b/drivers/acorn/char/pcf8583.c
@@ -10,7 +10,7 @@
* Driver for PCF8583 RTC & RAM chip
*/
#include <linux/i2c.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/mc146818rtc.h>
#include <linux/init.h>
diff --git a/drivers/acorn/net/ether1.c b/drivers/acorn/net/ether1.c
index 2cd3368630a3..54329f72f98b 100644
--- a/drivers/acorn/net/ether1.c
+++ b/drivers/acorn/net/ether1.c
@@ -40,7 +40,7 @@
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/in.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/init.h>
diff --git a/drivers/acorn/net/ether3.c b/drivers/acorn/net/ether3.c
index ddcd54753095..5d4795596b2f 100644
--- a/drivers/acorn/net/ether3.c
+++ b/drivers/acorn/net/ether3.c
@@ -55,7 +55,7 @@
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/in.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/netdevice.h>
diff --git a/drivers/acorn/net/etherh.c b/drivers/acorn/net/etherh.c
index 37896ff3af74..3a64f082d3a4 100644
--- a/drivers/acorn/net/etherh.c
+++ b/drivers/acorn/net/etherh.c
@@ -36,7 +36,7 @@
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/in.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/netdevice.h>
diff --git a/drivers/acorn/scsi/queue.c b/drivers/acorn/scsi/queue.c
index bf92ee668399..206afdbdb2c4 100644
--- a/drivers/acorn/scsi/queue.c
+++ b/drivers/acorn/scsi/queue.c
@@ -18,7 +18,7 @@
#include <linux/blk.h>
#include <linux/kernel.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/spinlock.h>
#include <linux/list.h>
#include <linux/init.h>
diff --git a/drivers/acpi/acpi_ksyms.c b/drivers/acpi/acpi_ksyms.c
index 8e1774c9a99d..e28333d3a200 100644
--- a/drivers/acpi/acpi_ksyms.c
+++ b/drivers/acpi/acpi_ksyms.c
@@ -18,6 +18,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+#include <linux/config.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
diff --git a/drivers/acpi/cmbatt.c b/drivers/acpi/cmbatt.c
index d17f87d97685..8d9cb376864c 100644
--- a/drivers/acpi/cmbatt.c
+++ b/drivers/acpi/cmbatt.c
@@ -24,6 +24,8 @@
* - parse returned data from _BST and _BIF
* Andy Grover <andrew.grover@intel.com> 2000-12-8
* - improved proc interface
+ * Pavel Machek <pavel@suse.cz> 2001-1-31
+ * - fixed oops on NULLs in return from _BIF
*/
#include <linux/kernel.h>
@@ -44,6 +46,8 @@
#define MAX_CM_BATTERIES 0x8
#define MAX_BATT_STRLEN 0x20
+#define Xstrncpy(a, b, c) if (b) strncpy(a,b,c); else strncpy(a, "unknown", c)
+
struct cmbatt_info
{
u32 power_unit;
@@ -163,9 +167,7 @@ acpi_get_battery_info(ACPI_HANDLE handle, struct cmbatt_info *result)
result->battery_capacity_granularity_1=objs[7].integer.value;
result->battery_capacity_granularity_2=objs[8].integer.value;
-#define Xstrncpy(a, b, c) if (b) strncpy(a,b,c); else strncpy(a, "unknown", c);
-
- /* BUG: trailing NULL issue */
+ /* BUG: trailing NULL issue */
Xstrncpy(result->model_number, objs[9].string.pointer, MAX_BATT_STRLEN-1);
Xstrncpy(result->serial_number, objs[10].string.pointer, MAX_BATT_STRLEN-1);
Xstrncpy(result->battery_type, objs[11].string.pointer, MAX_BATT_STRLEN-1);
@@ -248,38 +250,32 @@ proc_read_batt_info(char *page, char **start, off_t off,
goto end;
}
- if (info->last_full_capacity == ACPI_BATT_UNKNOWN)
- p += sprintf(p, "Unknown last full capacity\n");
- else
- p += sprintf(p, "Last Full Capacity %x %s /hr\n",
+ if (info->last_full_capacity != ACPI_BATT_UNKNOWN)
+ p += sprintf(p, "Last Full Capacity: %d %sh\n",
info->last_full_capacity, batt_list[batt_num].power_unit);
- if (info->design_capacity == ACPI_BATT_UNKNOWN)
- p += sprintf(p, "Unknown Design Capacity\n");
- else
- p += sprintf(p, "Design Capacity %x %s /hr\n",
+ if (info->design_capacity != ACPI_BATT_UNKNOWN)
+ p += sprintf(p, "Design Capacity: %d %sh\n",
info->design_capacity, batt_list[batt_num].power_unit);
if (info->battery_technology)
- p += sprintf(p, "Secondary Battery Technology\n");
+ p += sprintf(p, "Battery Technology: Secondary\n");
else
- p += sprintf(p, "Primary Battery Technology\n");
+ p += sprintf(p, "Battery Technology: Primary\n");
- if (info->design_voltage == ACPI_BATT_UNKNOWN)
- p += sprintf(p, "Unknown Design Voltage\n");
- else
- p += sprintf(p, "Design Voltage %x mV\n",
+ if (info->design_voltage != ACPI_BATT_UNKNOWN)
+ p += sprintf(p, "Design Voltage: %d mV\n",
info->design_voltage);
- p += sprintf(p, "Design Capacity Warning %d\n",
- info->design_capacity_warning);
- p += sprintf(p, "Design Capacity Low %d\n",
- info->design_capacity_low);
- p += sprintf(p, "Battery Capacity Granularity 1 %d\n",
+ p += sprintf(p, "Design Capacity Warning: %d %sh\n",
+ info->design_capacity_warning, batt_list[batt_num].power_unit);
+ p += sprintf(p, "Design Capacity Low: %d %sh\n",
+ info->design_capacity_low, batt_list[batt_num].power_unit);
+ p += sprintf(p, "Battery Capacity Granularity 1: %d\n",
info->battery_capacity_granularity_1);
- p += sprintf(p, "Battery Capacity Granularity 2 %d\n",
+ p += sprintf(p, "Battery Capacity Granularity 2: %d\n",
info->battery_capacity_granularity_2);
- p += sprintf(p, "model number %s\nserial number %s\nbattery type %s\nOEM info %s\n",
+ p += sprintf(p, "Model number; %s\nSerial number: %s\nBattery type: %s\nOEM info: %s\n",
info->model_number,info->serial_number,
info->battery_type,info->oem_info);
end:
@@ -310,38 +306,28 @@ proc_read_batt_status(char *page, char **start, off_t off,
goto end;
}
- printk("getting batt status\n");
-
if (acpi_get_battery_status(batt_list[batt_num].handle, &status) != AE_OK) {
printk(KERN_ERR "Cmbatt: acpi_get_battery_status failed\n");
goto end;
}
- p += sprintf(p, "Remaining Capacity: %x\n", status.remaining_capacity);
-
- if (status.state & 0x1)
- p += sprintf(p, "Battery discharging\n");
- if (status.state & 0x2)
- p += sprintf(p, "Battery charging\n");
- if (status.state & 0x4)
- p += sprintf(p, "Battery critically low\n");
+ p += sprintf(p, "Battery discharging: %s\n",
+ (status.state & 0x1)?"yes":"no");
+ p += sprintf(p, "Battery charging: %s\n",
+ (status.state & 0x2)?"yes":"no");
+ p += sprintf(p, "Battery critically low: %s\n",
+ (status.state & 0x4)?"yes":"no");
- if (status.present_rate == ACPI_BATT_UNKNOWN)
- p += sprintf(p, "Battery rate unknown\n");
- else
- p += sprintf(p, "Battery rate %x\n",
- status.present_rate);
+ if (status.present_rate != ACPI_BATT_UNKNOWN)
+ p += sprintf(p, "Battery rate: %d %s\n",
+ status.present_rate, batt_list[batt_num].power_unit);
- if (status.remaining_capacity == ACPI_BATT_UNKNOWN)
- p += sprintf(p, "Battery capacity unknown\n");
- else
- p += sprintf(p, "Battery capacity %x %s\n",
+ if (status.remaining_capacity != ACPI_BATT_UNKNOWN)
+ p += sprintf(p, "Battery capacity: %d %sh\n",
status.remaining_capacity, batt_list[batt_num].power_unit);
- if (status.present_voltage == ACPI_BATT_UNKNOWN)
- p += sprintf(p, "Battery voltage unknown\n");
- else
- p += sprintf(p, "Battery voltage %x volts\n",
+ if (status.present_voltage != ACPI_BATT_UNKNOWN)
+ p += sprintf(p, "Battery voltage: %d mV\n",
status.present_voltage);
end:
diff --git a/drivers/acpi/common/cmcopy.c b/drivers/acpi/common/cmcopy.c
index da3851c17828..3f1a7b36cd15 100644
--- a/drivers/acpi/common/cmcopy.c
+++ b/drivers/acpi/common/cmcopy.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: cmcopy - Internal to external object translation utilities
- * $Revision: 62 $
+ * $Revision: 66 $
*
*****************************************************************************/
@@ -27,51 +27,39 @@
#include "acpi.h"
#include "acinterp.h"
#include "acnamesp.h"
+#include "amlcode.h"
#define _COMPONENT MISCELLANEOUS
MODULE_NAME ("cmcopy")
-typedef struct search_st
-{
- ACPI_OPERAND_OBJECT *internal_obj;
- u32 index;
- ACPI_OBJECT *external_obj;
-
-} PKG_SEARCH_INFO;
-
-
-/* Used to traverse nested packages */
-
-PKG_SEARCH_INFO level[MAX_PACKAGE_DEPTH];
-
-/******************************************************************************
+/*******************************************************************************
*
- * FUNCTION: Acpi_cm_build_external_simple_object
+ * FUNCTION: Acpi_cm_copy_isimple_to_esimple
*
- * PARAMETERS: *Internal_obj - Pointer to the object we are examining
- * *Buffer - Where the object is returned
- * *Space_used - Where the data length is returned
+ * PARAMETERS: *Internal_object - Pointer to the object we are examining
+ * *Buffer - Where the object is returned
+ * *Space_used - Where the data length is returned
*
- * RETURN: Status - the status of the call
+ * RETURN: Status
*
* DESCRIPTION: This function is called to place a simple object in a user
- * buffer.
+ * buffer.
*
* The buffer is assumed to have sufficient space for the object.
*
******************************************************************************/
static ACPI_STATUS
-acpi_cm_build_external_simple_object (
- ACPI_OPERAND_OBJECT *internal_obj,
- ACPI_OBJECT *external_obj,
+acpi_cm_copy_isimple_to_esimple (
+ ACPI_OPERAND_OBJECT *internal_object,
+ ACPI_OBJECT *external_object,
u8 *data_space,
u32 *buffer_space_used)
{
u32 length = 0;
- u8 *source_ptr = NULL;
+ ACPI_STATUS status = AE_OK;
/*
@@ -79,116 +67,221 @@ acpi_cm_build_external_simple_object (
* package element
*/
- if (!internal_obj) {
+ if (!internal_object) {
*buffer_space_used = 0;
return (AE_OK);
}
/* Always clear the external object */
- MEMSET (external_obj, 0, sizeof (ACPI_OBJECT));
+ MEMSET (external_object, 0, sizeof (ACPI_OBJECT));
/*
* In general, the external object will be the same type as
* the internal object
*/
- external_obj->type = internal_obj->common.type;
+ external_object->type = internal_object->common.type;
/* However, only a limited number of external types are supported */
- switch (external_obj->type)
+ switch (internal_object->common.type)
{
case ACPI_TYPE_STRING:
- length = internal_obj->string.length + 1;
- external_obj->string.length = internal_obj->string.length;
- external_obj->string.pointer = (NATIVE_CHAR *) data_space;
- source_ptr = (u8 *) internal_obj->string.pointer;
+ length = internal_object->string.length + 1;
+ external_object->string.length = internal_object->string.length;
+ external_object->string.pointer = (NATIVE_CHAR *) data_space;
+ MEMCPY ((void *) data_space, (void *) internal_object->string.pointer, length);
break;
case ACPI_TYPE_BUFFER:
- length = internal_obj->buffer.length;
- external_obj->buffer.length = internal_obj->buffer.length;
- external_obj->buffer.pointer = data_space;
- source_ptr = (u8 *) internal_obj->buffer.pointer;
+ length = internal_object->buffer.length;
+ external_object->buffer.length = internal_object->buffer.length;
+ external_object->buffer.pointer = data_space;
+ MEMCPY ((void *) data_space, (void *) internal_object->buffer.pointer, length);
break;
case ACPI_TYPE_INTEGER:
- external_obj->integer.value= internal_obj->integer.value;
+ external_object->integer.value= internal_object->integer.value;
break;
case INTERNAL_TYPE_REFERENCE:
/*
- * This is an object reference. We use the object type of "Any"
- * to indicate a reference object containing a handle to an ACPI
- * named object.
+ * This is an object reference. Attempt to dereference it.
*/
- external_obj->type = ACPI_TYPE_ANY;
- external_obj->reference.handle = internal_obj->reference.node;
+ switch (internal_object->reference.op_code)
+ {
+ case AML_ZERO_OP:
+ external_object->type = ACPI_TYPE_INTEGER;
+ external_object->integer.value = 0;
+ break;
+
+ case AML_ONE_OP:
+ external_object->type = ACPI_TYPE_INTEGER;
+ external_object->integer.value = 1;
+ break;
+
+ case AML_ONES_OP:
+ external_object->type = ACPI_TYPE_INTEGER;
+ external_object->integer.value = ACPI_INTEGER_MAX;
+ break;
+
+ case AML_NAMEPATH_OP:
+ /*
+ * This is a named reference, get the string. We already know that
+ * we have room for it, use max length
+ */
+ length = MAX_STRING_LENGTH;
+ external_object->type = ACPI_TYPE_STRING;
+ external_object->string.pointer = (NATIVE_CHAR *) data_space;
+ status = acpi_ns_handle_to_pathname ((ACPI_HANDLE *) internal_object->reference.node,
+ &length, (char *) data_space);
+ break;
+
+ default:
+ /*
+ * Use the object type of "Any" to indicate a reference
+ * to object containing a handle to an ACPI named object.
+ */
+ external_object->type = ACPI_TYPE_ANY;
+ external_object->reference.handle = internal_object->reference.node;
+ break;
+ }
break;
case ACPI_TYPE_PROCESSOR:
- external_obj->processor.proc_id =
- internal_obj->processor.proc_id;
-
- external_obj->processor.pblk_address =
- internal_obj->processor.address;
-
- external_obj->processor.pblk_length =
- internal_obj->processor.length;
+ external_object->processor.proc_id = internal_object->processor.proc_id;
+ external_object->processor.pblk_address = internal_object->processor.address;
+ external_object->processor.pblk_length = internal_object->processor.length;
break;
+
case ACPI_TYPE_POWER:
- external_obj->power_resource.system_level =
- internal_obj->power_resource.system_level;
+ external_object->power_resource.system_level =
+ internal_object->power_resource.system_level;
- external_obj->power_resource.resource_order =
- internal_obj->power_resource.resource_order;
+ external_object->power_resource.resource_order =
+ internal_object->power_resource.resource_order;
break;
+
default:
- return (AE_CTRL_RETURN_VALUE);
+ /*
+ * There is no corresponding external object type
+ */
+ return (AE_SUPPORT);
break;
}
- /* Copy data if necessary (strings or buffers) */
+ *buffer_space_used = (u32) ROUND_UP_TO_NATIVE_WORD (length);
+
+ return (status);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_cm_copy_ielement_to_eelement
+ *
+ * PARAMETERS: ACPI_PKG_CALLBACK
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Copy one package element to another package element
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+acpi_cm_copy_ielement_to_eelement (
+ u8 object_type,
+ ACPI_OPERAND_OBJECT *source_object,
+ ACPI_GENERIC_STATE *state,
+ void *context)
+{
+ ACPI_STATUS status = AE_OK;
+ ACPI_PKG_INFO *info = (ACPI_PKG_INFO *) context;
+ u32 object_space;
+ u32 this_index;
+ ACPI_OBJECT *target_object;
+
+
+ this_index = state->pkg.index;
+ target_object = (ACPI_OBJECT *)
+ &((ACPI_OBJECT *)(state->pkg.dest_object))->package.elements[this_index];
+
+
+ switch (object_type)
+ {
+ case 0:
+
+ /*
+ * This is a simple or null object -- get the size
+ */
+
+ status = acpi_cm_copy_isimple_to_esimple (source_object,
+ target_object, info->free_space, &object_space);
+ if (ACPI_FAILURE (status)) {
+ return (status);
+ }
+
+ break;
+
+ case 1:
- if (length) {
/*
- * Copy the return data to the caller's buffer
+ * Build the package object
*/
- MEMCPY ((void *) data_space, (void *) source_ptr, length);
+ target_object->type = ACPI_TYPE_PACKAGE;
+ target_object->package.count = source_object->package.count;
+ target_object->package.elements = (ACPI_OBJECT *) info->free_space;
+
+ /*
+ * Pass the new package object back to the package walk routine
+ */
+ state->pkg.this_target_obj = target_object;
+
+ /*
+ * Save space for the array of objects (Package elements)
+ * update the buffer length counter
+ */
+ object_space = (u32) ROUND_UP_TO_NATIVE_WORD (
+ target_object->package.count * sizeof (ACPI_OBJECT));
+ break;
+
+ default:
+ return (AE_BAD_PARAMETER);
}
- *buffer_space_used = (u32) ROUND_UP_TO_NATIVE_WORD (length);
+ info->free_space += object_space;
+ info->length += object_space;
- return (AE_OK);
+ return (status);
}
-/******************************************************************************
+/*******************************************************************************
*
- * FUNCTION: Acpi_cm_build_external_package_object
+ * FUNCTION: Acpi_cm_copy_ipackage_to_epackage
*
- * PARAMETERS: *Internal_obj - Pointer to the object we are returning
- * *Buffer - Where the object is returned
- * *Space_used - Where the object length is returned
+ * PARAMETERS: *Internal_object - Pointer to the object we are returning
+ * *Buffer - Where the object is returned
+ * *Space_used - Where the object length is returned
*
- * RETURN: Status - the status of the call
+ * RETURN: Status
*
* DESCRIPTION: This function is called to place a package object in a user
* buffer. A package object by definition contains other objects.
@@ -200,49 +293,33 @@ acpi_cm_build_external_simple_object (
******************************************************************************/
static ACPI_STATUS
-acpi_cm_build_external_package_object (
- ACPI_OPERAND_OBJECT *internal_obj,
+acpi_cm_copy_ipackage_to_epackage (
+ ACPI_OPERAND_OBJECT *internal_object,
u8 *buffer,
u32 *space_used)
{
- u8 *free_space;
- ACPI_OBJECT *external_obj;
- u32 current_depth = 0;
+ ACPI_OBJECT *external_object;
ACPI_STATUS status;
- u32 length = 0;
- u32 this_index;
- u32 object_space;
- ACPI_OPERAND_OBJECT *this_internal_obj;
- ACPI_OBJECT *this_external_obj;
- PKG_SEARCH_INFO *level_ptr;
+ ACPI_PKG_INFO info;
/*
* First package at head of the buffer
*/
- external_obj = (ACPI_OBJECT *) buffer;
+ external_object = (ACPI_OBJECT *) buffer;
/*
* Free space begins right after the first package
*/
- free_space = buffer + ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT));
+ info.length = 0;
+ info.object_space = 0;
+ info.num_packages = 1;
+ info.free_space = buffer + ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT));
- /*
- * Initialize the working variables
- */
-
- MEMSET ((void *) level, 0, sizeof (level));
-
- level[0].internal_obj = internal_obj;
- level[0].external_obj = external_obj;
- level[0].index = 0;
- level_ptr = &level[0];
- current_depth = 0;
-
- external_obj->type = internal_obj->common.type;
- external_obj->package.count = internal_obj->package.count;
- external_obj->package.elements = (ACPI_OBJECT *) free_space;
+ external_object->type = internal_object->common.type;
+ external_object->package.count = internal_object->package.count;
+ external_object->package.elements = (ACPI_OBJECT *) info.free_space;
/*
@@ -250,136 +327,27 @@ acpi_cm_build_external_package_object (
* and move the free space past it
*/
- free_space += external_obj->package.count *
+ info.free_space += external_object->package.count *
ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT));
- while (1) {
- this_index = level_ptr->index;
- this_internal_obj =
- (ACPI_OPERAND_OBJECT *)
- level_ptr->internal_obj->package.elements[this_index];
- this_external_obj =
- (ACPI_OBJECT *)
- &level_ptr->external_obj->package.elements[this_index];
-
-
- /*
- * Check for
- * 1) Null object -- OK, this can happen if package
- * element is never initialized
- * 2) Not an internal object - can be Node instead
- * 3) Any internal object other than a package.
- *
- * The more complex package case is handled later
- */
-
- if ((!this_internal_obj) ||
- (!VALID_DESCRIPTOR_TYPE (
- this_internal_obj, ACPI_DESC_TYPE_INTERNAL)) ||
- (!IS_THIS_OBJECT_TYPE (
- this_internal_obj, ACPI_TYPE_PACKAGE)))
- {
- /*
- * This is a simple or null object -- get the size
- */
-
- status =
- acpi_cm_build_external_simple_object (this_internal_obj,
- this_external_obj,
- free_space,
- &object_space);
- if (ACPI_FAILURE (status)) {
- return (status);
- }
-
- free_space += object_space;
- length += object_space;
-
- level_ptr->index++;
- while (level_ptr->index >=
- level_ptr->internal_obj->package.count)
- {
- /*
- * We've handled all of the objects at this
- * level. This means that we have just
- * completed a package. That package may
- * have contained one or more packages
- * itself
- */
- if (current_depth == 0) {
- /*
- * We have handled all of the objects
- * in the top level package just add
- * the length of the package objects
- * and get out
- */
- *space_used = length;
- return (AE_OK);
- }
-
- /*
- * go back up a level and move the index
- * past the just completed package object.
- */
- current_depth--;
- level_ptr = &level[current_depth];
- level_ptr->index++;
- }
- }
-
+ status = acpi_cm_walk_package_tree (internal_object, external_object,
+ acpi_cm_copy_ielement_to_eelement, &info);
- else {
- /*
- * This object is a package
- * -- we must go one level deeper
- */
- if (current_depth >= MAX_PACKAGE_DEPTH-1) {
- /*
- * Too many nested levels of packages
- * for us to handle
- */
- return (AE_LIMIT);
- }
+ *space_used = info.length;
- /*
- * Build the package object
- */
- this_external_obj->type = ACPI_TYPE_PACKAGE;
- this_external_obj->package.count =
- this_internal_obj->package.count;
- this_external_obj->package.elements =
- (ACPI_OBJECT *) free_space;
+ return (status);
- /*
- * Save space for the array of objects (Package elements)
- * update the buffer length counter
- */
- object_space = (u32) ROUND_UP_TO_NATIVE_WORD (
- this_external_obj->package.count *
- sizeof (ACPI_OBJECT));
-
- free_space += object_space;
- length += object_space;
-
- current_depth++;
- level_ptr = &level[current_depth];
- level_ptr->internal_obj = this_internal_obj;
- level_ptr->external_obj = this_external_obj;
- level_ptr->index = 0;
- }
- }
}
-
-/******************************************************************************
+/*******************************************************************************
*
- * FUNCTION: Acpi_cm_build_external_object
+ * FUNCTION: Acpi_cm_copy_iobject_to_eobject
*
- * PARAMETERS: *Internal_obj - The internal object to be converted
- * *Buffer_ptr - Where the object is returned
+ * PARAMETERS: *Internal_object - The internal object to be converted
+ * *Buffer_ptr - Where the object is returned
*
- * RETURN: Status - the status of the call
+ * RETURN: Status
*
* DESCRIPTION: This function is called to build an API object to be returned to
* the caller.
@@ -387,35 +355,31 @@ acpi_cm_build_external_package_object (
******************************************************************************/
ACPI_STATUS
-acpi_cm_build_external_object (
- ACPI_OPERAND_OBJECT *internal_obj,
+acpi_cm_copy_iobject_to_eobject (
+ ACPI_OPERAND_OBJECT *internal_object,
ACPI_BUFFER *ret_buffer)
{
ACPI_STATUS status;
- if (IS_THIS_OBJECT_TYPE (internal_obj, ACPI_TYPE_PACKAGE)) {
+ if (IS_THIS_OBJECT_TYPE (internal_object, ACPI_TYPE_PACKAGE)) {
/*
- * Package objects contain other objects (which can be objects)
- * buildpackage does it all
+ * Package object: Copy all subobjects (including
+ * nested packages)
*/
- status =
- acpi_cm_build_external_package_object (internal_obj,
- ret_buffer->pointer,
- &ret_buffer->length);
+ status = acpi_cm_copy_ipackage_to_epackage (internal_object,
+ ret_buffer->pointer, &ret_buffer->length);
}
else {
/*
* Build a simple object (no nested objects)
*/
- status =
- acpi_cm_build_external_simple_object (internal_obj,
- (ACPI_OBJECT *) ret_buffer->pointer,
- ((u8 *) ret_buffer->pointer +
- ROUND_UP_TO_NATIVE_WORD (
- sizeof (ACPI_OBJECT))),
- &ret_buffer->length);
+ status = acpi_cm_copy_isimple_to_esimple (internal_object,
+ (ACPI_OBJECT *) ret_buffer->pointer,
+ ((u8 *) ret_buffer->pointer +
+ ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT))),
+ &ret_buffer->length);
/*
* build simple does not include the object size in the length
* so we add it in here
@@ -427,14 +391,14 @@ acpi_cm_build_external_object (
}
-/******************************************************************************
+/*******************************************************************************
*
- * FUNCTION: Acpi_cm_build_internal_simple_object
+ * FUNCTION: Acpi_cm_copy_esimple_to_isimple
*
- * PARAMETERS: *External_obj - The external object to be converted
- * *Internal_obj - Where the internal object is returned
+ * PARAMETERS: *External_object - The external object to be converted
+ * *Internal_object - Where the internal object is returned
*
- * RETURN: Status - the status of the call
+ * RETURN: Status
*
* DESCRIPTION: This function copies an external object to an internal one.
* NOTE: Pointers can be copied, we don't need to copy data.
@@ -444,28 +408,28 @@ acpi_cm_build_external_object (
******************************************************************************/
ACPI_STATUS
-acpi_cm_build_internal_simple_object (
- ACPI_OBJECT *external_obj,
- ACPI_OPERAND_OBJECT *internal_obj)
+acpi_cm_copy_esimple_to_isimple (
+ ACPI_OBJECT *external_object,
+ ACPI_OPERAND_OBJECT *internal_object)
{
- internal_obj->common.type = (u8) external_obj->type;
+ internal_object->common.type = (u8) external_object->type;
- switch (external_obj->type)
+ switch (external_object->type)
{
case ACPI_TYPE_STRING:
- internal_obj->string.length = external_obj->string.length;
- internal_obj->string.pointer = external_obj->string.pointer;
+ internal_object->string.length = external_object->string.length;
+ internal_object->string.pointer = external_object->string.pointer;
break;
case ACPI_TYPE_BUFFER:
- internal_obj->buffer.length = external_obj->buffer.length;
- internal_obj->buffer.pointer = external_obj->buffer.pointer;
+ internal_object->buffer.length = external_object->buffer.length;
+ internal_object->buffer.pointer = external_object->buffer.pointer;
break;
@@ -473,7 +437,7 @@ acpi_cm_build_internal_simple_object (
/*
* Number is included in the object itself
*/
- internal_obj->integer.value = external_obj->integer.value;
+ internal_object->integer.value = external_object->integer.value;
break;
@@ -491,11 +455,11 @@ acpi_cm_build_internal_simple_object (
/* Code to convert packages that are parameters to control methods */
-/******************************************************************************
+/*******************************************************************************
*
- * FUNCTION: Acpi_cm_build_internal_package_object
+ * FUNCTION: Acpi_cm_copy_epackage_to_ipackage
*
- * PARAMETERS: *Internal_obj - Pointer to the object we are returning
+ * PARAMETERS: *Internal_object - Pointer to the object we are returning
* *Buffer - Where the object is returned
* *Space_used - Where the length of the object is returned
*
@@ -511,26 +475,24 @@ acpi_cm_build_internal_simple_object (
******************************************************************************/
static ACPI_STATUS
-acpi_cm_build_internal_package_object (
- ACPI_OPERAND_OBJECT *internal_obj,
+acpi_cm_copy_epackage_to_ipackage (
+ ACPI_OPERAND_OBJECT *internal_object,
u8 *buffer,
u32 *space_used)
{
u8 *free_space;
- ACPI_OBJECT *external_obj;
- u32 current_depth = 0;
+ ACPI_OBJECT *external_object;
u32 length = 0;
u32 this_index;
u32 object_space = 0;
ACPI_OPERAND_OBJECT *this_internal_obj;
ACPI_OBJECT *this_external_obj;
- PKG_SEARCH_INFO *level_ptr;
/*
* First package at head of the buffer
*/
- external_obj = (ACPI_OBJECT *)buffer;
+ external_object = (ACPI_OBJECT *)buffer;
/*
* Free space begins right after the first package
@@ -538,20 +500,9 @@ acpi_cm_build_internal_package_object (
free_space = buffer + sizeof(ACPI_OBJECT);
- /*
- * Initialize the working variables
- */
-
- MEMSET ((void *) level, 0, sizeof(level));
-
- level[0].internal_obj = internal_obj;
- level[0].external_obj = external_obj;
- level_ptr = &level[0];
- current_depth = 0;
-
- external_obj->type = internal_obj->common.type;
- external_obj->package.count = internal_obj->package.count;
- external_obj->package.elements = (ACPI_OBJECT *)free_space;
+ external_object->type = internal_object->common.type;
+ external_object->package.count = internal_object->package.count;
+ external_object->package.elements = (ACPI_OBJECT *)free_space;
/*
@@ -559,100 +510,21 @@ acpi_cm_build_internal_package_object (
* and move the free space past it
*/
- free_space += external_obj->package.count * sizeof(ACPI_OBJECT);
-
-
- while (1) {
- this_index = level_ptr->index;
+ free_space += external_object->package.count * sizeof(ACPI_OBJECT);
- this_internal_obj = (ACPI_OPERAND_OBJECT *)
- &level_ptr->internal_obj->package.elements[this_index];
-
- this_external_obj = (ACPI_OBJECT *)
- &level_ptr->external_obj->package.elements[this_index];
-
- if (IS_THIS_OBJECT_TYPE (this_internal_obj, ACPI_TYPE_PACKAGE)) {
- /*
- * If this object is a package then we go one deeper
- */
- if (current_depth >= MAX_PACKAGE_DEPTH-1) {
- /*
- * Too many nested levels of packages for us to handle
- */
- return (AE_LIMIT);
- }
- /*
- * Build the package object
- */
- this_external_obj->type = ACPI_TYPE_PACKAGE;
- this_external_obj->package.count = this_internal_obj->package.count;
- this_external_obj->package.elements = (ACPI_OBJECT *) free_space;
+ /* Call Walk_package */
- /*
- * Save space for the array of objects (Package elements)
- * update the buffer length counter
- */
- object_space = this_external_obj->package.count *
- sizeof (ACPI_OBJECT);
-
- free_space += object_space;
- length += object_space;
-
- current_depth++;
- level_ptr = &level[current_depth];
- level_ptr->internal_obj = this_internal_obj;
- level_ptr->external_obj = this_external_obj;
- level_ptr->index = 0;
-
- } /* if object is a package */
-
- else {
- free_space += object_space;
- length += object_space;
-
- level_ptr->index++;
- while (level_ptr->index >=
- level_ptr->internal_obj->package.count)
- {
- /*
- * We've handled all of the objects at
- * this level, This means that we have
- * just completed a package. That package
- * may have contained one or more packages
- * itself
- */
- if (current_depth == 0) {
- /*
- * We have handled all of the objects
- * in the top level package just add
- * the length of the package objects
- * and get out
- */
- *space_used = length;
- return (AE_OK);
- }
-
- /*
- * go back up a level and move the index
- * past the just completed package object.
- */
- current_depth--;
- level_ptr = &level[current_depth];
- level_ptr->index++;
- }
- } /* else object is NOT a package */
- } /* while (1) */
}
#endif /* Future implementation */
-/******************************************************************************
+/*******************************************************************************
*
- * FUNCTION: Acpi_cm_build_internal_object
+ * FUNCTION: Acpi_cm_copy_eobject_to_iobject
*
- * PARAMETERS: *Internal_obj - The external object to be converted
+ * PARAMETERS: *Internal_object - The external object to be converted
* *Buffer_ptr - Where the internal object is returned
*
* RETURN: Status - the status of the call
@@ -662,14 +534,14 @@ acpi_cm_build_internal_package_object (
******************************************************************************/
ACPI_STATUS
-acpi_cm_build_internal_object (
- ACPI_OBJECT *external_obj,
- ACPI_OPERAND_OBJECT *internal_obj)
+acpi_cm_copy_eobject_to_iobject (
+ ACPI_OBJECT *external_object,
+ ACPI_OPERAND_OBJECT *internal_object)
{
ACPI_STATUS status;
- if (external_obj->type == ACPI_TYPE_PACKAGE) {
+ if (external_object->type == ACPI_TYPE_PACKAGE) {
/*
* Package objects contain other objects (which can be objects)
* buildpackage does it all
@@ -679,7 +551,7 @@ acpi_cm_build_internal_object (
* control methods only. This is a very, very rare case.
*/
/*
- Status = Acpi_cm_build_internal_package_object(Internal_obj,
+ Status = Acpi_cm_copy_epackage_to_ipackage(Internal_object,
Ret_buffer->Pointer,
&Ret_buffer->Length);
*/
@@ -690,7 +562,7 @@ acpi_cm_build_internal_object (
/*
* Build a simple object (no nested objects)
*/
- status = acpi_cm_build_internal_simple_object (external_obj, internal_obj);
+ status = acpi_cm_copy_esimple_to_isimple (external_object, internal_object);
/*
* build simple does not include the object size in the length
* so we add it in here
@@ -700,3 +572,137 @@ acpi_cm_build_internal_object (
return (status);
}
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_cm_copy_ielement_to_ielement
+ *
+ * PARAMETERS: ACPI_PKG_CALLBACK
+ *
+ * RETURN: Status - the status of the call
+ *
+ * DESCRIPTION: Copy one package element to another package element
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+acpi_cm_copy_ielement_to_ielement (
+ u8 object_type,
+ ACPI_OPERAND_OBJECT *source_object,
+ ACPI_GENERIC_STATE *state,
+ void *context)
+{
+ ACPI_STATUS status = AE_OK;
+ u32 this_index;
+ ACPI_OPERAND_OBJECT **this_target_ptr;
+ ACPI_OPERAND_OBJECT *target_object;
+
+
+ this_index = state->pkg.index;
+ this_target_ptr = (ACPI_OPERAND_OBJECT **)
+ &state->pkg.dest_object->package.elements[this_index];
+
+ switch (object_type)
+ {
+ case 0:
+
+ /*
+ * This is a simple object, just copy it
+ */
+ target_object = acpi_cm_create_internal_object (source_object->common.type);
+ if (!target_object) {
+ return (AE_NO_MEMORY);
+ }
+
+ status = acpi_aml_store_object_to_object (source_object, target_object,
+ (ACPI_WALK_STATE *) context);
+ if (ACPI_FAILURE (status)) {
+ return (status);
+ }
+
+ *this_target_ptr = target_object;
+ break;
+
+
+ case 1:
+ /*
+ * This object is a package - go down another nesting level
+ * Create and build the package object
+ */
+ target_object = acpi_cm_create_internal_object (ACPI_TYPE_PACKAGE);
+ if (!target_object) {
+ /* TBD: must delete package created up to this point */
+
+ return (AE_NO_MEMORY);
+ }
+
+ target_object->package.count = source_object->package.count;
+
+ /*
+ * Pass the new package object back to the package walk routine
+ */
+ state->pkg.this_target_obj = target_object;
+
+ /*
+ * Store the object pointer in the parent package object
+ */
+ *this_target_ptr = target_object;
+ break;
+
+ default:
+ return (AE_BAD_PARAMETER);
+ }
+
+
+ return (status);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_cm_copy_ipackage_to_ipackage
+ *
+ * PARAMETERS: *Source_obj - Pointer to the source package object
+ * *Dest_obj - Where the internal object is returned
+ *
+ * RETURN: Status - the status of the call
+ *
+ * DESCRIPTION: This function is called to copy an internal package object
+ * into another internal package object.
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+acpi_cm_copy_ipackage_to_ipackage (
+ ACPI_OPERAND_OBJECT *source_obj,
+ ACPI_OPERAND_OBJECT *dest_obj,
+ ACPI_WALK_STATE *walk_state)
+{
+ ACPI_STATUS status = AE_OK;
+
+
+ dest_obj->common.type = source_obj->common.type;
+ dest_obj->package.count = source_obj->package.count;
+
+
+ /*
+ * Create the object array and walk the source package tree
+ */
+
+ dest_obj->package.elements = acpi_cm_callocate ((source_obj->package.count + 1) *
+ sizeof (void *));
+ dest_obj->package.next_element = dest_obj->package.elements;
+
+ if (!dest_obj->package.elements) {
+ REPORT_ERROR (
+ ("Aml_build_copy_internal_package_object: Package allocation failure\n"));
+ return (AE_NO_MEMORY);
+ }
+
+
+ status = acpi_cm_walk_package_tree (source_obj, dest_obj,
+ acpi_cm_copy_ielement_to_ielement, walk_state);
+
+ return (status);
+}
+
diff --git a/drivers/acpi/common/cmobject.c b/drivers/acpi/common/cmobject.c
index 5f73abaafcad..9c23eff7f689 100644
--- a/drivers/acpi/common/cmobject.c
+++ b/drivers/acpi/common/cmobject.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: cmobject - ACPI object create/delete/size/cache routines
- * $Revision: 35 $
+ * $Revision: 36 $
*
*****************************************************************************/
@@ -35,7 +35,7 @@
MODULE_NAME ("cmobject")
-/******************************************************************************
+/*******************************************************************************
*
* FUNCTION: _Cm_create_internal_object
*
@@ -49,11 +49,11 @@
*
* DESCRIPTION: Create and initialize a new internal object.
*
- * NOTE:
- * We always allocate the worst-case object descriptor because these
- * objects are cached, and we want them to be one-size-satisifies-any-request.
- * This in itself may not be the most memory efficient, but the efficiency
- * of the object cache should more than make up for this!
+ * NOTE: We always allocate the worst-case object descriptor because
+ * these objects are cached, and we want them to be
+ * one-size-satisifies-any-request. This in itself may not be
+ * the most memory efficient, but the efficiency of the object
+ * cache should more than make up for this!
*
******************************************************************************/
@@ -91,7 +91,7 @@ _cm_create_internal_object (
}
-/******************************************************************************
+/*******************************************************************************
*
* FUNCTION: Acpi_cm_valid_internal_object
*
@@ -99,7 +99,7 @@ _cm_create_internal_object (
*
* RETURN: Validate a pointer to be an ACPI_OPERAND_OBJECT
*
- *****************************************************************************/
+ ******************************************************************************/
u8
acpi_cm_valid_internal_object (
@@ -136,7 +136,7 @@ acpi_cm_valid_internal_object (
}
-/*****************************************************************************
+/*******************************************************************************
*
* FUNCTION: _Cm_allocate_object_desc
*
@@ -150,7 +150,7 @@ acpi_cm_valid_internal_object (
* DESCRIPTION: Allocate a new object descriptor. Gracefully handle
* error conditions.
*
- ****************************************************************************/
+ ******************************************************************************/
void *
_cm_allocate_object_desc (
@@ -211,7 +211,7 @@ _cm_allocate_object_desc (
}
-/*****************************************************************************
+/*******************************************************************************
*
* FUNCTION: Acpi_cm_delete_object_desc
*
@@ -221,7 +221,7 @@ _cm_allocate_object_desc (
*
* DESCRIPTION: Free an ACPI object descriptor or add it to the object cache
*
- ****************************************************************************/
+ ******************************************************************************/
void
acpi_cm_delete_object_desc (
@@ -274,7 +274,7 @@ acpi_cm_delete_object_desc (
}
-/******************************************************************************
+/*******************************************************************************
*
* FUNCTION: Acpi_cm_delete_object_cache
*
@@ -317,7 +317,7 @@ acpi_cm_delete_object_cache (
}
-/*****************************************************************************
+/*******************************************************************************
*
* FUNCTION: Acpi_cm_init_static_object
*
@@ -329,7 +329,7 @@ acpi_cm_delete_object_cache (
* DESCRIPTION: Initialize a static object. Sets flags to disallow dynamic
* deletion of the object.
*
- ****************************************************************************/
+ ******************************************************************************/
void
acpi_cm_init_static_object (
@@ -365,14 +365,14 @@ acpi_cm_init_static_object (
}
-/******************************************************************************
+/*******************************************************************************
*
* FUNCTION: Acpi_cm_get_simple_object_size
*
- * PARAMETERS: *Internal_obj - Pointer to the object we are examining
- * *Ret_length - Where the length is returned
+ * PARAMETERS: *Internal_object - Pointer to the object we are examining
+ * *Ret_length - Where the length is returned
*
- * RETURN: Status - the status of the call
+ * RETURN: Status
*
* DESCRIPTION: This function is called to determine the space required to
* contain a simple object for return to an API user.
@@ -384,7 +384,7 @@ acpi_cm_init_static_object (
ACPI_STATUS
acpi_cm_get_simple_object_size (
- ACPI_OPERAND_OBJECT *internal_obj,
+ ACPI_OPERAND_OBJECT *internal_object,
u32 *obj_length)
{
u32 length;
@@ -393,7 +393,7 @@ acpi_cm_get_simple_object_size (
/* Handle a null object (Could be a uninitialized package element -- which is legal) */
- if (!internal_obj) {
+ if (!internal_object) {
*obj_length = 0;
return (AE_OK);
}
@@ -403,7 +403,7 @@ acpi_cm_get_simple_object_size (
length = sizeof (ACPI_OBJECT);
- if (VALID_DESCRIPTOR_TYPE (internal_obj, ACPI_DESC_TYPE_NAMED)) {
+ if (VALID_DESCRIPTOR_TYPE (internal_object, ACPI_DESC_TYPE_NAMED)) {
/* Object is a named object (reference), just return the length */
*obj_length = (u32) ROUND_UP_TO_NATIVE_WORD (length);
@@ -419,18 +419,18 @@ acpi_cm_get_simple_object_size (
* TBD:[Investigate] do strings and buffers require alignment also?
*/
- switch (internal_obj->common.type)
+ switch (internal_object->common.type)
{
case ACPI_TYPE_STRING:
- length += internal_obj->string.length + 1;
+ length += internal_object->string.length + 1;
break;
case ACPI_TYPE_BUFFER:
- length += internal_obj->buffer.length;
+ length += internal_object->buffer.length;
break;
@@ -450,7 +450,7 @@ acpi_cm_get_simple_object_size (
* The only type that should be here is opcode AML_NAMEPATH_OP -- since
* this means an object reference
*/
- if (internal_obj->reference.op_code != AML_NAMEPATH_OP) {
+ if (internal_object->reference.op_code != AML_NAMEPATH_OP) {
status = AE_TYPE;
}
break;
@@ -475,149 +475,119 @@ acpi_cm_get_simple_object_size (
}
-/******************************************************************************
+/*******************************************************************************
*
- * FUNCTION: Acpi_cm_get_package_object_size
+ * FUNCTION: Acpi_cm_copy_package_to_internal
*
- * PARAMETERS: *Internal_obj - Pointer to the object we are examining
- * *Ret_length - Where the length is returned
+ * PARAMETERS: ACPI_PKG_CALLBACK
*
* RETURN: Status - the status of the call
*
- * DESCRIPTION: This function is called to determine the space required to contain
- * a package object for return to an API user.
- *
- * This is moderately complex since a package contains other objects
- * including packages.
+ * DESCRIPTION:
*
******************************************************************************/
ACPI_STATUS
-acpi_cm_get_package_object_size (
- ACPI_OPERAND_OBJECT *internal_obj,
- u32 *obj_length)
+acpi_cm_get_element_length (
+ u8 object_type,
+ ACPI_OPERAND_OBJECT *source_object,
+ ACPI_GENERIC_STATE *state,
+ void *context)
{
-
- ACPI_OPERAND_OBJECT *this_internal_obj;
- ACPI_OPERAND_OBJECT *parent_obj[MAX_PACKAGE_DEPTH];
- ACPI_OPERAND_OBJECT *this_parent;
- u32 this_index;
- u32 index[MAX_PACKAGE_DEPTH];
- u32 length = 0;
+ ACPI_STATUS status = AE_OK;
+ ACPI_PKG_INFO *info = (ACPI_PKG_INFO *) context;
u32 object_space;
- u32 current_depth = 0;
- u32 package_count = 1;
- ACPI_STATUS status;
- /* Init the package stack TBD: replace with linked list */
-
- MEMSET(parent_obj, 0, MAX_PACKAGE_DEPTH);
- MEMSET(index, 0, MAX_PACKAGE_DEPTH);
+ switch (object_type)
+ {
+ case 0:
- parent_obj[0] = internal_obj;
+ /*
+ * Simple object - just get the size (Null object/entry is handled
+ * here also) and sum it into the running package length
+ */
+ status = acpi_cm_get_simple_object_size (source_object, &object_space);
+ if (ACPI_FAILURE (status)) {
+ return (status);
+ }
- while (1) {
- this_parent = parent_obj[current_depth];
- this_index = index[current_depth];
- this_internal_obj = this_parent->package.elements[this_index];
+ info->length += object_space;
+ break;
- /*
- * Check for 1) An uninitialized package element. It is completely
- * legal to declare a package and leave it uninitialized
- * 2) Any type other than a package. Packages are handled
- * below.
- */
+ case 1:
+ /* Package - nothing much to do here, let the walk handle it */
- if ((!this_internal_obj) ||
- (!IS_THIS_OBJECT_TYPE (this_internal_obj, ACPI_TYPE_PACKAGE)))
- {
- /*
- * Simple object - just get the size (Null object/entry handled
- * also)
- */
-
- status =
- acpi_cm_get_simple_object_size (this_internal_obj, &object_space);
-
- if (ACPI_FAILURE (status)) {
- return (status);
- }
-
- length += object_space;
-
- index[current_depth]++;
- while (index[current_depth] >=
- parent_obj[current_depth]->package.count)
- {
- /*
- * We've handled all of the objects at
- * this level, This means that we have
- * just completed a package. That package
- * may have contained one or more packages
- * itself.
- */
- if (current_depth == 0) {
- /*
- * We have handled all of the objects
- * in the top level package just add the
- * length of the package objects and
- * get out. Round up to the next machine
- * word.
- */
- length +=
- ROUND_UP_TO_NATIVE_WORD (
- sizeof (ACPI_OBJECT)) *
- package_count;
-
- *obj_length = length;
-
- return (AE_OK);
- }
-
- /*
- * Go back up a level and move the index
- * past the just completed package object.
- */
- current_depth--;
- index[current_depth]++;
- }
- }
+ info->num_packages++;
+ state->pkg.this_target_obj = NULL;
+ break;
- else {
- /*
- * This object is a package
- * -- go one level deeper
- */
- package_count++;
- if (current_depth < MAX_PACKAGE_DEPTH-1) {
- current_depth++;
- parent_obj[current_depth] = this_internal_obj;
- index[current_depth] = 0;
- }
-
- else {
- /*
- * Too many nested levels of packages for us
- * to handle
- */
-
- return (AE_LIMIT);
- }
- }
+ default:
+ return (AE_BAD_PARAMETER);
}
+
+
+ return (status);
}
-/******************************************************************************
+/*******************************************************************************
+ *
+ * FUNCTION: Acpi_cm_get_package_object_size
+ *
+ * PARAMETERS: *Internal_object - Pointer to the object we are examining
+ * *Ret_length - Where the length is returned
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: This function is called to determine the space required to
+ * contain a package object for return to an API user.
+ *
+ * This is moderately complex since a package contains other
+ * objects including packages.
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+acpi_cm_get_package_object_size (
+ ACPI_OPERAND_OBJECT *internal_object,
+ u32 *obj_length)
+{
+ ACPI_STATUS status;
+ ACPI_PKG_INFO info;
+
+
+ info.length = 0;
+ info.object_space = 0;
+ info.num_packages = 1;
+
+ status = acpi_cm_walk_package_tree (internal_object, NULL,
+ acpi_cm_get_element_length, &info);
+
+ /*
+ * We have handled all of the objects in all levels of the package.
+ * just add the length of the package objects themselves.
+ * Round up to the next machine word.
+ */
+ info.length += ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)) *
+ info.num_packages;
+
+ /* Return the total package length */
+
+ *obj_length = info.length;
+ return (status);
+}
+
+
+/*******************************************************************************
*
* FUNCTION: Acpi_cm_get_object_size
*
- * PARAMETERS: *Internal_obj - Pointer to the object we are examining
- * *Ret_length - Where the length will be returned
+ * PARAMETERS: *Internal_object - Pointer to the object we are examining
+ * *Ret_length - Where the length will be returned
*
- * RETURN: Status - the status of the call
+ * RETURN: Status
*
* DESCRIPTION: This function is called to determine the space required to
* contain an object for return to an API user.
@@ -626,22 +596,20 @@ acpi_cm_get_package_object_size (
ACPI_STATUS
acpi_cm_get_object_size(
- ACPI_OPERAND_OBJECT *internal_obj,
+ ACPI_OPERAND_OBJECT *internal_object,
u32 *obj_length)
{
ACPI_STATUS status;
- if ((VALID_DESCRIPTOR_TYPE (internal_obj, ACPI_DESC_TYPE_INTERNAL)) &&
- (IS_THIS_OBJECT_TYPE (internal_obj, ACPI_TYPE_PACKAGE)))
+ if ((VALID_DESCRIPTOR_TYPE (internal_object, ACPI_DESC_TYPE_INTERNAL)) &&
+ (IS_THIS_OBJECT_TYPE (internal_object, ACPI_TYPE_PACKAGE)))
{
- status =
- acpi_cm_get_package_object_size (internal_obj, obj_length);
+ status = acpi_cm_get_package_object_size (internal_object, obj_length);
}
else {
- status =
- acpi_cm_get_simple_object_size (internal_obj, obj_length);
+ status = acpi_cm_get_simple_object_size (internal_object, obj_length);
}
return (status);
diff --git a/drivers/acpi/common/cmutils.c b/drivers/acpi/common/cmutils.c
index b0ee8b4d9d00..2bbce16a299b 100644
--- a/drivers/acpi/common/cmutils.c
+++ b/drivers/acpi/common/cmutils.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: cmutils - common utility procedures
- * $Revision: 23 $
+ * $Revision: 27 $
*
******************************************************************************/
@@ -340,6 +340,41 @@ acpi_cm_create_update_state_and_push (
/*******************************************************************************
*
+ * FUNCTION: Acpi_cm_create_pkg_state_and_push
+ *
+ * PARAMETERS: *Object - Object to be added to the new state
+ * Action - Increment/Decrement
+ * State_list - List the state will be added to
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Create a new state and push it
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+acpi_cm_create_pkg_state_and_push (
+ void *internal_object,
+ void *external_object,
+ u16 index,
+ ACPI_GENERIC_STATE **state_list)
+{
+ ACPI_GENERIC_STATE *state;
+
+
+ state = acpi_cm_create_pkg_state (internal_object, external_object, index);
+ if (!state) {
+ return (AE_NO_MEMORY);
+ }
+
+
+ acpi_cm_push_generic_state (state_list, state);
+ return (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: Acpi_cm_push_generic_state
*
* PARAMETERS: List_head - Head of the state stack
@@ -500,6 +535,49 @@ acpi_cm_create_update_state (
/*******************************************************************************
*
+ * FUNCTION: Acpi_cm_create_pkg_state
+ *
+ * PARAMETERS: Object - Initial Object to be installed in the
+ * state
+ * Action - Update action to be performed
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Create an "Update State" - a flavor of the generic state used
+ * to update reference counts and delete complex objects such
+ * as packages.
+ *
+ ******************************************************************************/
+
+ACPI_GENERIC_STATE *
+acpi_cm_create_pkg_state (
+ void *internal_object,
+ void *external_object,
+ u16 index)
+{
+ ACPI_GENERIC_STATE *state;
+
+
+ /* Create the generic state object */
+
+ state = acpi_cm_create_generic_state ();
+ if (!state) {
+ return (NULL);
+ }
+
+ /* Init fields specific to the update struct */
+
+ state->pkg.source_object = (ACPI_OPERAND_OBJECT *) internal_object;
+ state->pkg.dest_object = external_object;
+ state->pkg.index = index;
+ state->pkg.num_packages = 1;
+
+ return (state);
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: Acpi_cm_create_control_state
*
* PARAMETERS: None
@@ -632,16 +710,20 @@ ACPI_STATUS
acpi_cm_resolve_package_references (
ACPI_OPERAND_OBJECT *obj_desc)
{
- u32 count;
- ACPI_OPERAND_OBJECT *sub_object;
+ u32 count;
+ ACPI_OPERAND_OBJECT *sub_object;
+
if (obj_desc->common.type != ACPI_TYPE_PACKAGE) {
- /* Must be a package */
+ /* The object must be a package */
REPORT_ERROR (("Must resolve Package Refs on a Package\n"));
return(AE_ERROR);
}
+ /*
+ * TBD: what about nested packages? */
+
for (count = 0; count < obj_desc->package.count; count++) {
sub_object = obj_desc->package.elements[count];
@@ -667,6 +749,130 @@ acpi_cm_resolve_package_references (
/*******************************************************************************
*
+ * FUNCTION: Acpi_cm_walk_package_tree
+ *
+ * PARAMETERS: Obj_desc - The Package object on which to resolve refs
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Walk through a package
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+acpi_cm_walk_package_tree (
+ ACPI_OPERAND_OBJECT *source_object,
+ void *target_object,
+ ACPI_PKG_CALLBACK walk_callback,
+ void *context)
+{
+ ACPI_STATUS status = AE_OK;
+ ACPI_GENERIC_STATE *state_list = NULL;
+ ACPI_GENERIC_STATE *state;
+ u32 this_index;
+ ACPI_OPERAND_OBJECT *this_source_obj;
+
+
+ state = acpi_cm_create_pkg_state (source_object, target_object, 0);
+ if (!state) {
+ return (AE_NO_MEMORY);
+ }
+
+ while (state) {
+ this_index = state->pkg.index;
+ this_source_obj = (ACPI_OPERAND_OBJECT *)
+ state->pkg.source_object->package.elements[this_index];
+
+ /*
+ * Check for
+ * 1) An uninitialized package element. It is completely
+ * legal to declare a package and leave it uninitialized
+ * 2) Not an internal object - can be a namespace node instead
+ * 3) Any type other than a package. Packages are handled in else case below.
+ */
+ if ((!this_source_obj) ||
+ (!VALID_DESCRIPTOR_TYPE (
+ this_source_obj, ACPI_DESC_TYPE_INTERNAL)) ||
+ (!IS_THIS_OBJECT_TYPE (
+ this_source_obj, ACPI_TYPE_PACKAGE)))
+ {
+
+ status = walk_callback (0, this_source_obj, state, context);
+ if (ACPI_FAILURE (status)) {
+ /* TBD: must delete package created up to this point */
+
+ return (status);
+ }
+
+ state->pkg.index++;
+ while (state->pkg.index >= state->pkg.source_object->package.count) {
+ /*
+ * We've handled all of the objects at this level, This means
+ * that we have just completed a package. That package may
+ * have contained one or more packages itself.
+ *
+ * Delete this state and pop the previous state (package).
+ */
+ acpi_cm_delete_generic_state (state);
+ state = acpi_cm_pop_generic_state (&state_list);
+
+
+ /* Finished when there are no more states */
+
+ if (!state) {
+ /*
+ * We have handled all of the objects in the top level
+ * package just add the length of the package objects
+ * and exit
+ */
+ return (AE_OK);
+ }
+
+ /*
+ * Go back up a level and move the index past the just
+ * completed package object.
+ */
+ state->pkg.index++;
+ }
+ }
+
+ else {
+ /* This is a sub-object of type package */
+
+ status = walk_callback (1, this_source_obj, state, context);
+ if (ACPI_FAILURE (status)) {
+ /* TBD: must delete package created up to this point */
+
+ return (status);
+ }
+
+
+ /*
+ * The callback above returned a new target package object.
+ */
+
+ /*
+ * Push the current state and create a new one
+ */
+ acpi_cm_push_generic_state (&state_list, state);
+ state = acpi_cm_create_pkg_state (this_source_obj, state->pkg.this_target_obj, 0);
+ if (!state) {
+ /* TBD: must delete package created up to this point */
+
+ return (AE_NO_MEMORY);
+ }
+ }
+ }
+
+ /* We should never get here */
+
+ return (AE_AML_INTERNAL);
+
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: _Report_error
*
* PARAMETERS: Module_name - Caller's module name (for error output)
@@ -676,7 +882,7 @@ acpi_cm_resolve_package_references (
*
* RETURN: None
*
- * DESCRIPTION: Print error message from KD table
+ * DESCRIPTION: Print error message
*
******************************************************************************/
@@ -703,7 +909,7 @@ _report_error (
*
* RETURN: None
*
- * DESCRIPTION: Print warning message from KD table
+ * DESCRIPTION: Print warning message
*
******************************************************************************/
@@ -729,7 +935,7 @@ _report_warning (
*
* RETURN: None
*
- * DESCRIPTION: Print information message from KD table
+ * DESCRIPTION: Print information message
*
******************************************************************************/
diff --git a/drivers/acpi/common/cmxface.c b/drivers/acpi/common/cmxface.c
index ce87b50d273d..e566b7f21dfe 100644
--- a/drivers/acpi/common/cmxface.c
+++ b/drivers/acpi/common/cmxface.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: cmxface - External interfaces for "global" ACPI functions
- * $Revision: 62 $
+ * $Revision: 64 $
*
*****************************************************************************/
@@ -158,8 +158,7 @@ acpi_enable_subsystem (
if (!(flags & ACPI_NO_ACPI_ENABLE)) {
status = acpi_enable ();
if (ACPI_FAILURE (status)) {
- /* TBD: workaround. Old Lions don't enable properly */
- /*return (Status);*/
+ return (status);
}
}
@@ -180,12 +179,11 @@ acpi_enable_subsystem (
/*
* Initialize all device objects in the namespace
- * This runs the _STA, _INI, and _HID methods, and detects
- * the PCI root bus(es)
+ * This runs the _STA and _INI methods.
*/
if (!(flags & ACPI_NO_DEVICE_INIT)) {
- status = acpi_ns_initialize_devices (flags & ACPI_NO_PCI_INIT);
+ status = acpi_ns_initialize_devices ();
if (ACPI_FAILURE (status)) {
return (status);
}
@@ -193,7 +191,7 @@ acpi_enable_subsystem (
/*
- * Initialize the objects that remain unitialized. This
+ * Initialize the objects that remain uninitialized. This
* runs the executable AML that is part of the declaration of Op_regions
* and Fields.
*/
diff --git a/drivers/acpi/cpu.c b/drivers/acpi/cpu.c
index 3e4adcee2b79..9f27080bb860 100644
--- a/drivers/acpi/cpu.c
+++ b/drivers/acpi/cpu.c
@@ -2,6 +2,7 @@
* cpu.c - Processor handling
*
* Copyright (C) 2000 Andrew Henroid
+ * Copyright (C) 2001 Andrew Grover
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -28,27 +29,37 @@
#define _COMPONENT OS_DEPENDENT
MODULE_NAME ("cpu")
-unsigned long acpi_c2_exit_latency = ACPI_INFINITE;
-unsigned long acpi_c3_exit_latency = ACPI_INFINITE;
-unsigned long acpi_c2_enter_latency = ACPI_INFINITE;
-unsigned long acpi_c3_enter_latency = ACPI_INFINITE;
+u32 acpi_c2_exit_latency = ACPI_INFINITE;
+u32 acpi_c3_exit_latency = ACPI_INFINITE;
+u32 acpi_c2_enter_latency = ACPI_INFINITE;
+u32 acpi_c3_enter_latency = ACPI_INFINITE;
+u32 acpi_use_idle = TRUE;
-static unsigned long acpi_pblk = ACPI_INVALID;
+u32 acpi_c1_count = 0;
+u32 acpi_c2_count = 0;
+u32 acpi_c3_count = 0;
+
+static u32 acpi_pblk = ACPI_INVALID;
static int acpi_c2_tested = 0;
static int acpi_c3_tested = 0;
static int acpi_max_c_state = 1;
-static int acpi_pm_tmr_len;
+static int acpi_pm_tmr_len = 24;
+#define CPU_POWER_STATES 3
#define MAX_C2_LATENCY 100
#define MAX_C3_LATENCY 1000
+#define ACPI_STATE_C1 0
+#define ACPI_STATE_C2 1
+#define ACPI_STATE_C3 2
+
/*
* Clear busmaster activity flag
*/
static inline void
acpi_clear_bm_activity(void)
{
- acpi_hw_register_bit_access(ACPI_WRITE, ACPI_MTX_LOCK, BM_STS, 0);
+ acpi_hw_register_bit_access(ACPI_WRITE, ACPI_MTX_LOCK, BM_STS, 1);
}
/*
@@ -100,6 +111,7 @@ acpi_compare_pm_timers(u32 first, u32 second)
}
}
+
/*
* Idle loop (uniprocessor only)
*/
@@ -109,14 +121,9 @@ acpi_idle(void)
static int sleep_level = 1;
FADT_DESCRIPTOR *fadt = &acpi_fadt;
- if (!fadt
- || (STRNCMP(fadt->header.signature, ACPI_FADT_SIGNATURE, ACPI_SIG_LEN) != 0)
- || !fadt->Xpm_tmr_blk.address
- || !acpi_pblk)
- goto not_initialized;
-
/*
- * start from the previous sleep level..
+ * start from the previous sleep level.
+ * if not initialized, we goto sleep1
*/
if (sleep_level == 1
|| acpi_max_c_state < 2)
@@ -126,7 +133,7 @@ acpi_idle(void)
|| acpi_max_c_state < 3)
goto sleep2;
- sleep3:
+sleep3:
sleep_level = 3;
if (!acpi_c3_tested) {
DEBUG_PRINT(ACPI_INFO, ("C3 works\n"));
@@ -147,6 +154,7 @@ acpi_idle(void)
goto sleep2;
time = acpi_read_pm_timer();
+ acpi_c3_count++;
inb(acpi_pblk + ACPI_P_LVL3);
/* Dummy read, force synchronization with the PMU */
acpi_read_pm_timer();
@@ -154,10 +162,10 @@ acpi_idle(void)
__sti();
if (diff < acpi_c3_exit_latency)
- goto sleep2;
+ goto sleep1;
}
- sleep3_with_arbiter:
+sleep3_with_arbiter:
for (;;) {
unsigned long time;
unsigned long diff;
@@ -172,6 +180,7 @@ acpi_idle(void)
/* Disable arbiter, park on CPU */
acpi_hw_register_bit_access(ACPI_WRITE, ACPI_MTX_LOCK, ARB_DIS, 1);
+ acpi_c3_count++;
inb(acpi_pblk + ACPI_P_LVL3);
/* Dummy read, force synchronization with the PMU */
acpi_read_pm_timer();
@@ -181,10 +190,10 @@ acpi_idle(void)
__sti();
if (diff < acpi_c3_exit_latency)
- goto sleep2;
+ goto sleep1;
}
- sleep2:
+sleep2:
sleep_level = 2;
if (!acpi_c2_tested) {
DEBUG_PRINT(ACPI_INFO, ("C2 works\n"));
@@ -200,6 +209,7 @@ acpi_idle(void)
goto out;
time = acpi_read_pm_timer();
+ acpi_c2_count++;
inb(acpi_pblk + ACPI_P_LVL2);
/* Dummy read, force synchronization with the PMU */
acpi_read_pm_timer();
@@ -217,7 +227,7 @@ acpi_idle(void)
goto sleep3;
}
- sleep1:
+sleep1:
sleep_level = 1;
acpi_sleep_on_busmaster();
for (;;) {
@@ -228,6 +238,7 @@ acpi_idle(void)
if (current->need_resched)
goto out;
time = acpi_read_pm_timer();
+ acpi_c1_count++;
safe_halt();
diff = acpi_compare_pm_timers(time, acpi_read_pm_timer());
if (diff > acpi_c2_enter_latency
@@ -235,15 +246,7 @@ acpi_idle(void)
goto sleep2;
}
- not_initialized:
- for (;;) {
- __cli();
- if (current->need_resched)
- goto out;
- safe_halt();
- }
-
- out:
+out:
__sti();
}
@@ -278,17 +281,17 @@ acpi_found_cpu(ACPI_HANDLE handle, u32 level, void *ctx, void **value)
acpi_c2_exit_latency
= ACPI_MICROSEC_TO_TMR_TICKS(acpi_fadt.plvl2_lat);
acpi_c2_enter_latency
- = ACPI_MICROSEC_TO_TMR_TICKS(ACPI_TMR_HZ / 1000);
+ = ACPI_MICROSEC_TO_TMR_TICKS(acpi_fadt.plvl2_lat * 4);
acpi_max_c_state = 2;
printk(KERN_INFO "ACPI: System firmware supports: C2");
-
+
if (acpi_fadt.plvl3_lat
&& acpi_fadt.plvl3_lat <= MAX_C3_LATENCY) {
acpi_c3_exit_latency
= ACPI_MICROSEC_TO_TMR_TICKS(acpi_fadt.plvl3_lat);
acpi_c3_enter_latency
- = ACPI_MICROSEC_TO_TMR_TICKS(acpi_fadt.plvl3_lat * 5);
+ = ACPI_MICROSEC_TO_TMR_TICKS(acpi_fadt.plvl3_lat * 12);
acpi_max_c_state = 3;
printk(" C3");
@@ -297,6 +300,10 @@ acpi_found_cpu(ACPI_HANDLE handle, u32 level, void *ctx, void **value)
printk("\n");
}
+ printk(KERN_INFO "ACPI: plvl2lat=%d plvl3lat=%d\n", acpi_fadt.plvl2_lat, acpi_fadt.plvl3_lat);
+ printk(KERN_INFO "ACPI: C2 enter=%d C2 exit=%d\n", acpi_c2_enter_latency, acpi_c2_exit_latency);
+ printk(KERN_INFO "ACPI: C3 enter=%d C3 exit=%d\n", acpi_c3_enter_latency, acpi_c3_exit_latency);
+
return AE_OK;
}
@@ -328,13 +335,19 @@ acpi_cpu_init(void)
acpi_pm_timer_init();
-
+ if (acpi_use_idle) {
#ifdef CONFIG_SMP
- if (smp_num_cpus == 1)
- pm_idle = acpi_idle;
+ if (smp_num_cpus == 1)
+ pm_idle = acpi_idle;
#else
- pm_idle = acpi_idle;
+ pm_idle = acpi_idle;
#endif
+ printk(KERN_INFO "ACPI: Using ACPI idle\n");
+ printk(KERN_INFO "ACPI: If experiencing system slowness, try adding \"acpi=no-idle\" to cmdline\n");
+ }
+ else {
+ printk(KERN_INFO "ACPI: Not using ACPI idle\n");
+ }
return 0;
}
diff --git a/drivers/acpi/dispatcher/dsobject.c b/drivers/acpi/dispatcher/dsobject.c
index 0a6c88b4d5fa..a3e0d7a4f4eb 100644
--- a/drivers/acpi/dispatcher/dsobject.c
+++ b/drivers/acpi/dispatcher/dsobject.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: dsobject - Dispatcher object management routines
- * $Revision: 56 $
+ * $Revision: 57 $
*
*****************************************************************************/
@@ -102,6 +102,7 @@ acpi_ds_init_one_object (
info->method_count++;
+
/*
* Set the execution data width (32 or 64) based upon the
* revision number of the parent ACPI table.
diff --git a/drivers/acpi/dispatcher/dsopcode.c b/drivers/acpi/dispatcher/dsopcode.c
index ba06cf4dba4e..12f8f34364ee 100644
--- a/drivers/acpi/dispatcher/dsopcode.c
+++ b/drivers/acpi/dispatcher/dsopcode.c
@@ -2,7 +2,7 @@
*
* Module Name: dsopcode - Dispatcher Op Region support and handling of
* "control" opcodes
- * $Revision: 30 $
+ * $Revision: 32 $
*
*****************************************************************************/
@@ -73,7 +73,6 @@ acpi_ds_get_field_unit_arguments (
extra_desc = obj_desc->field_unit.extra;
node = obj_desc->field_unit.node;
-
/*
* Allocate a new parser op to be the root of the parsed
* Op_region tree
diff --git a/drivers/acpi/driver.c b/drivers/acpi/driver.c
index 241528fc6cb9..8863e468833f 100644
--- a/drivers/acpi/driver.c
+++ b/drivers/acpi/driver.c
@@ -60,6 +60,8 @@ static DECLARE_WAIT_QUEUE_HEAD(acpi_event_wait);
static volatile int acpi_thread_pid = -1;
+static int acpi_start = 1;
+
/************************************************/
/* DECLARE_TASK_QUEUE is defined in */
/* /usr/src/linux/include/linux/tqueue.h */
@@ -382,6 +384,19 @@ static struct ctl_table acpi_table[] =
&acpi_c3_enter_latency, sizeof(acpi_c3_enter_latency),
0644, NULL, &acpi_do_ulong},
+ {ACPI_C1_COUNT, "c1_count",
+ &acpi_c1_count, sizeof(acpi_c1_count),
+ 0644, NULL, &acpi_do_ulong},
+
+ {ACPI_C2_COUNT, "c2_count",
+ &acpi_c2_count, sizeof(acpi_c2_count),
+ 0644, NULL, &acpi_do_ulong},
+
+ {ACPI_C3_COUNT, "c3_count",
+ &acpi_c3_count, sizeof(acpi_c3_count),
+ 0644, NULL, &acpi_do_ulong},
+
+
/* until it actually works */
/* {ACPI_SLEEP, "sleep", NULL, 0, 0600, NULL, &acpi_do_sleep},*/
@@ -540,10 +555,16 @@ acpi_thread(void *context)
int __init
acpi_init(void)
{
- acpi_thread_pid = kernel_thread(acpi_thread,
+ if (acpi_start) {
+ acpi_thread_pid = kernel_thread(acpi_thread,
NULL,
(CLONE_FS | CLONE_FILES
| CLONE_SIGHAND | SIGCHLD));
+ }
+ else {
+ printk(KERN_INFO "ACPI: Disabled\n");
+ }
+
return ((acpi_thread_pid >= 0) ? 0:-ENODEV);
}
@@ -571,3 +592,21 @@ acpi_exit(void)
module_init(acpi_init);
module_exit(acpi_exit);
+
+#ifndef MODULE
+static int __init acpi_setup(char *str)
+{
+ while ((str != NULL) && (*str != '\0')) {
+ if (strncmp(str, "no-idle", 7) == 0)
+ acpi_use_idle = 0;
+ if (strncmp(str, "off", 3) == 0)
+ acpi_start = 0;
+ str = strchr(str, ',');
+ if (str != NULL)
+ str += strspn(str, ", \t");
+ }
+ return 1;
+}
+
+__setup("acpi=", acpi_setup);
+#endif
diff --git a/drivers/acpi/driver.h b/drivers/acpi/driver.h
index 9abae5d56eb7..ca6b6dd1f7f3 100644
--- a/drivers/acpi/driver.h
+++ b/drivers/acpi/driver.h
@@ -37,10 +37,14 @@
int acpi_cpu_init(void);
u32 acpi_read_pm_timer(void);
-extern unsigned long acpi_c2_exit_latency;
-extern unsigned long acpi_c3_exit_latency;
-extern unsigned long acpi_c2_enter_latency;
-extern unsigned long acpi_c3_enter_latency;
+extern u32 acpi_c2_exit_latency;
+extern u32 acpi_c3_exit_latency;
+extern u32 acpi_c2_enter_latency;
+extern u32 acpi_c3_enter_latency;
+extern u32 acpi_use_idle;
+extern u32 acpi_c1_count;
+extern u32 acpi_c2_count;
+extern u32 acpi_c3_count;
/*
* driver.c
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index 5e42683c6ac2..f74a3b671089 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -554,7 +554,7 @@ found_ec(
ec_cxt->need_global_lock = obj.integer.value;
- printk(KERN_INFO "ACPI: found EC @ (0x%02x,0x%02x,gpe %d GL %d)\n",
+ printk(KERN_INFO "ACPI: found EC @ (0x%02x,0x%02x,GPE %d GL %d)\n",
ec_cxt->data_port, ec_cxt->status_port, ec_cxt->gpe_bit,
ec_cxt->need_global_lock);
diff --git a/drivers/acpi/events/evevent.c b/drivers/acpi/events/evevent.c
index afdd477db6e5..668bdf253c35 100644
--- a/drivers/acpi/events/evevent.c
+++ b/drivers/acpi/events/evevent.c
@@ -2,7 +2,7 @@
*
* Module Name: evevent - Fixed and General Purpose Acpi_event
* handling and dispatch
- * $Revision: 33 $
+ * $Revision: 34 $
*
*****************************************************************************/
@@ -55,7 +55,7 @@ acpi_ev_initialize (
ACPI_STATUS status;
- /* Make sure we've got ACPI tables */
+ /* Make sure we have ACPI tables */
if (!acpi_gbl_DSDT) {
return (AE_NO_ACPI_TABLES);
@@ -704,7 +704,7 @@ u32
acpi_ev_gpe_dispatch (
u32 gpe_number)
{
- ACPI_GPE_LEVEL_INFO gpe_info;
+ ACPI_GPE_LEVEL_INFO gpe_info;
/*DEBUG_INCREMENT_EVENT_COUNT (EVENT_GENERAL);*/
@@ -720,59 +720,58 @@ acpi_ev_gpe_dispatch (
*/
acpi_hw_disable_gpe (gpe_number);
- gpe_info = acpi_gbl_gpe_info [gpe_number];
-
- /*
- * Edge-Triggered?
- * ---------------
- * If edge-triggered, clear the GPE status bit now. Note that
- * level-triggered events are cleared after the GPE is serviced.
- */
- if (gpe_info.type & ACPI_EVENT_EDGE_TRIGGERED) {
- acpi_hw_clear_gpe (gpe_number);
- }
+ gpe_info = acpi_gbl_gpe_info [gpe_number];
+ /*
+ * Edge-Triggered?
+ * ---------------
+ * If edge-triggered, clear the GPE status bit now. Note that
+ * level-triggered events are cleared after the GPE is serviced.
+ */
+ if (gpe_info.type & ACPI_EVENT_EDGE_TRIGGERED) {
+ acpi_hw_clear_gpe (gpe_number);
+ }
/*
* Function Handler (e.g. EC)?
*/
- if (gpe_info.handler) {
- /* Invoke function handler (at interrupt level). */
- gpe_info.handler (gpe_info.context);
-
- /* Level-Triggered? */
- if (gpe_info.type & ACPI_EVENT_LEVEL_TRIGGERED) {
- acpi_hw_clear_gpe (gpe_number);
- }
+ if (gpe_info.handler) {
+ /* Invoke function handler (at interrupt level). */
+ gpe_info.handler (gpe_info.context);
- /* Enable GPE */
- acpi_hw_enable_gpe (gpe_number);
+ /* Level-Triggered? */
+ if (gpe_info.type & ACPI_EVENT_LEVEL_TRIGGERED) {
+ acpi_hw_clear_gpe (gpe_number);
}
- /*
- * Method Handler (e.g. _Exx/_Lxx)?
- */
- else if (gpe_info.method_handle) {
- if (ACPI_FAILURE(acpi_os_queue_for_execution (OSD_PRIORITY_GPE,
+
+ /* Enable GPE */
+ acpi_hw_enable_gpe (gpe_number);
+ }
+ /*
+ * Method Handler (e.g. _Exx/_Lxx)?
+ */
+ else if (gpe_info.method_handle) {
+ if (ACPI_FAILURE(acpi_os_queue_for_execution (OSD_PRIORITY_GPE,
acpi_ev_asynch_execute_gpe_method, (void*)(NATIVE_UINT)gpe_number)))
- {
- /*
- * Shoudn't occur, but if it does report an error. Note that
- * the GPE will remain disabled until the ACPI Core Subsystem
- * is restarted, or the handler is removed/reinstalled.
- */
- REPORT_ERROR (("Acpi_ev_gpe_dispatch: Unable to queue handler for GPE bit [%X]\n", gpe_number));
- }
+ {
+ /*
+ * Shoudn't occur, but if it does report an error. Note that
+ * the GPE will remain disabled until the ACPI Core Subsystem
+ * is restarted, or the handler is removed/reinstalled.
+ */
+ REPORT_ERROR (("Acpi_ev_gpe_dispatch: Unable to queue handler for GPE bit [%X]\n", gpe_number));
}
- /*
- * No Handler? Report an error and leave the GPE disabled.
- */
- else {
- REPORT_ERROR (("Acpi_ev_gpe_dispatch: No installed handler for GPE [%X]\n", gpe_number));
+ }
+ /*
+ * No Handler? Report an error and leave the GPE disabled.
+ */
+ else {
+ REPORT_ERROR (("Acpi_ev_gpe_dispatch: No installed handler for GPE [%X]\n", gpe_number));
- /* Level-Triggered? */
- if (gpe_info.type & ACPI_EVENT_LEVEL_TRIGGERED) {
- acpi_hw_clear_gpe (gpe_number);
- }
+ /* Level-Triggered? */
+ if (gpe_info.type & ACPI_EVENT_LEVEL_TRIGGERED) {
+ acpi_hw_clear_gpe (gpe_number);
}
+ }
return (INTERRUPT_HANDLED);
}
diff --git a/drivers/acpi/events/evregion.c b/drivers/acpi/events/evregion.c
index 071639a27670..56539d515fb5 100644
--- a/drivers/acpi/events/evregion.c
+++ b/drivers/acpi/events/evregion.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: evregion - ACPI Address_space (Op_region) handler dispatch
- * $Revision: 94 $
+ * $Revision: 96 $
*
*****************************************************************************/
diff --git a/drivers/acpi/hardware/hwsleep.c b/drivers/acpi/hardware/hwsleep.c
index 892c721c6a0d..5ab9b3784c9b 100644
--- a/drivers/acpi/hardware/hwsleep.c
+++ b/drivers/acpi/hardware/hwsleep.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Name: hwsleep.c - ACPI Hardware Sleep/Wake Interface
- * $Revision: 5 $
+ * $Revision: 7 $
*
*****************************************************************************/
@@ -175,15 +175,14 @@ acpi_enter_sleep_state (
PM1_acontrol |= (type_a << acpi_hw_get_bit_shift (SLP_TYPE_X_MASK));
PM1_bcontrol |= (type_b << acpi_hw_get_bit_shift (SLP_TYPE_X_MASK));
- /* the old version was disabling interrupts. let's try it without
- * and see how that works
- */
- /*disable();*/
+ disable();
acpi_hw_register_write(ACPI_MTX_LOCK, PM1_a_CONTROL, PM1_acontrol);
acpi_hw_register_write(ACPI_MTX_LOCK, PM1_b_CONTROL, PM1_bcontrol);
+ acpi_hw_register_write(ACPI_MTX_LOCK, PM1_CONTROL,
+ (1 << acpi_hw_get_bit_shift (SLP_EN_MASK)));
- /*enable();*/
+ enable();
return (AE_OK);
}
diff --git a/drivers/acpi/hardware/hwtimer.c b/drivers/acpi/hardware/hwtimer.c
index b7f529ccf67c..5a56ddeba920 100644
--- a/drivers/acpi/hardware/hwtimer.c
+++ b/drivers/acpi/hardware/hwtimer.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Name: hwtimer.c - ACPI Power Management Timer Interface
- * $Revision: 4 $
+ * $Revision: 5 $
*
*****************************************************************************/
@@ -133,7 +133,7 @@ acpi_get_timer_duration (
/*
* Compute Tick Delta:
* -------------------
- * Handle timer rollovers on 24- versus 32-bit timers.
+ * Handle (max one) timer rollovers on 24- versus 32-bit timers.
*/
if (start_ticks < end_ticks) {
delta_ticks = end_ticks - start_ticks;
@@ -141,13 +141,17 @@ acpi_get_timer_duration (
else if (start_ticks > end_ticks) {
/* 24-bit Timer */
if (0 == acpi_gbl_FADT->tmr_val_ext) {
- delta_ticks = (0x00FFFFFF - start_ticks) + end_ticks;
+ delta_ticks = (((0x00FFFFFF - start_ticks) + end_ticks) & 0x00FFFFFF);
}
/* 32-bit Timer */
else {
delta_ticks = (0xFFFFFFFF - start_ticks) + end_ticks;
}
}
+ else {
+ *time_elapsed = 0;
+ return (AE_OK);
+ }
/*
* Compute Duration:
diff --git a/drivers/acpi/include/accommon.h b/drivers/acpi/include/accommon.h
index 61d54a220dcc..feeeef818907 100644
--- a/drivers/acpi/include/accommon.h
+++ b/drivers/acpi/include/accommon.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: accommon.h -- prototypes for the common (subsystem-wide) procedures
- * $Revision: 87 $
+ * $Revision: 90 $
*
*****************************************************************************/
@@ -27,6 +27,30 @@
#define _ACCOMMON_H
+typedef
+ACPI_STATUS (*ACPI_PKG_CALLBACK) (
+ u8 object_type,
+ ACPI_OPERAND_OBJECT *source_object,
+ ACPI_GENERIC_STATE *state,
+ void *context);
+
+
+ACPI_STATUS
+acpi_cm_walk_package_tree (
+ ACPI_OPERAND_OBJECT *source_object,
+ void *target_object,
+ ACPI_PKG_CALLBACK walk_callback,
+ void *context);
+
+
+typedef struct acpi_pkg_info
+{
+ u8 *free_space;
+ u32 length;
+ u32 object_space;
+ u32 num_packages;
+} ACPI_PKG_INFO;
+
#define REF_INCREMENT (u16) 0
#define REF_DECREMENT (u16) 1
#define REF_FORCE_DELETE (u16) 2
@@ -194,29 +218,30 @@ acpi_cm_build_package_object (
u32 *space_used);
ACPI_STATUS
-acpi_cm_build_external_object (
+acpi_cm_copy_iobject_to_eobject (
ACPI_OPERAND_OBJECT *obj,
ACPI_BUFFER *ret_buffer);
ACPI_STATUS
-acpi_cm_build_internal_simple_object(
+acpi_cm_copy_esimple_to_isimple(
ACPI_OBJECT *user_obj,
ACPI_OPERAND_OBJECT *obj);
ACPI_STATUS
-acpi_cm_build_internal_object (
+acpi_cm_copy_eobject_to_iobject (
ACPI_OBJECT *obj,
ACPI_OPERAND_OBJECT *internal_obj);
ACPI_STATUS
-acpi_cm_copy_internal_simple_object (
+acpi_cm_copy_isimple_to_isimple (
ACPI_OPERAND_OBJECT *source_obj,
ACPI_OPERAND_OBJECT *dest_obj);
ACPI_STATUS
-acpi_cm_build_copy_internal_package_object (
+acpi_cm_copy_ipackage_to_ipackage (
ACPI_OPERAND_OBJECT *source_obj,
- ACPI_OPERAND_OBJECT *dest_obj);
+ ACPI_OPERAND_OBJECT *dest_obj,
+ ACPI_WALK_STATE *walk_state);
/*
@@ -526,12 +551,25 @@ acpi_cm_create_update_state (
ACPI_OPERAND_OBJECT *object,
u16 action);
+ACPI_GENERIC_STATE *
+acpi_cm_create_pkg_state (
+ void *internal_object,
+ void *external_object,
+ u16 index);
+
ACPI_STATUS
acpi_cm_create_update_state_and_push (
ACPI_OPERAND_OBJECT *object,
u16 action,
ACPI_GENERIC_STATE **state_list);
+ACPI_STATUS
+acpi_cm_create_pkg_state_and_push (
+ void *internal_object,
+ void *external_object,
+ u16 index,
+ ACPI_GENERIC_STATE **state_list);
+
ACPI_GENERIC_STATE *
acpi_cm_create_control_state (
void);
@@ -564,6 +602,15 @@ ACPI_STATUS
acpi_cm_resolve_package_references (
ACPI_OPERAND_OBJECT *obj_desc);
+#ifdef ACPI_DEBUG
+
+void
+acpi_cm_display_init_pathname (
+ ACPI_HANDLE obj_handle,
+ char *path);
+
+#endif
+
/*
* Memory allocation functions and related macros.
diff --git a/drivers/acpi/include/acconfig.h b/drivers/acpi/include/acconfig.h
index ea9be649d745..e45c17db84b3 100644
--- a/drivers/acpi/include/acconfig.h
+++ b/drivers/acpi/include/acconfig.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acconfig.h - Global configuration constants
- * $Revision: 53 $
+ * $Revision: 55 $
*
*****************************************************************************/
@@ -53,7 +53,7 @@
/* Version string */
-#define ACPI_CA_VERSION 0x20010125
+#define ACPI_CA_VERSION 0x20010208
/* Maximum objects in the various object caches */
@@ -149,10 +149,5 @@
#define RSDP_SCAN_STEP 16
-/* Maximum nesting of package objects */
-
-#define MAX_PACKAGE_DEPTH 16
-
-
#endif /* _ACCONFIG_H */
diff --git a/drivers/acpi/include/acdebug.h b/drivers/acpi/include/acdebug.h
index f1fa7094ef18..d645cceb7c8c 100644
--- a/drivers/acpi/include/acdebug.h
+++ b/drivers/acpi/include/acdebug.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acdebug.h - ACPI/AML debugger
- * $Revision: 39 $
+ * $Revision: 41 $
*
*****************************************************************************/
@@ -43,6 +43,7 @@ extern u8 opt_disasm;
extern u8 opt_stats;
extern u8 opt_parse_jit;
extern u8 opt_verbose;
+extern u8 opt_ini_methods;
extern NATIVE_CHAR *args[DB_MAX_ARGS];
@@ -198,6 +199,10 @@ void
acpi_db_find_references (
NATIVE_CHAR *object_arg);
+void
+acpi_db_display_resources (
+ NATIVE_CHAR *object_arg);
+
/*
* dbdisasm - AML disassembler
diff --git a/drivers/acpi/include/acgcc.h b/drivers/acpi/include/acgcc.h
index 82b1e5139a99..d92af99d6aa8 100644
--- a/drivers/acpi/include/acgcc.h
+++ b/drivers/acpi/include/acgcc.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acgcc.h - GCC specific defines, etc.
- * $Revision: 4 $
+ * $Revision: 5 $
*
*****************************************************************************/
@@ -26,12 +26,11 @@
#ifndef __ACGCC_H__
#define __ACGCC_H__
-#define COMPILER_DEPENDENT_UINT64 unsigned long long
-
#ifdef __ia64__
#define _IA64
+#define COMPILER_DEPENDENT_UINT64 unsigned long
/* Single threaded */
#define ACPI_APPLICATION
@@ -95,8 +94,7 @@
#else /* DO IA32 */
-
-
+#define COMPILER_DEPENDENT_UINT64 unsigned long long
#define ACPI_ASM_MACROS
#define causeinterrupt(level)
#define BREAKPOINT3
diff --git a/drivers/acpi/include/acinterp.h b/drivers/acpi/include/acinterp.h
index 6eb571e5fae0..94d739a07876 100644
--- a/drivers/acpi/include/acinterp.h
+++ b/drivers/acpi/include/acinterp.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acinterp.h - Interpreter subcomponent prototypes and defines
- * $Revision: 91 $
+ * $Revision: 92 $
*
*****************************************************************************/
@@ -558,12 +558,6 @@ acpi_aml_unsigned_integer_to_string (
ACPI_INTEGER value,
NATIVE_CHAR *out_string);
-ACPI_STATUS
-acpi_aml_build_copy_internal_package_object (
- ACPI_OPERAND_OBJECT *source_obj,
- ACPI_OPERAND_OBJECT *dest_obj,
- ACPI_WALK_STATE *walk_state);
-
/*
* amregion - default Op_region handlers
diff --git a/drivers/acpi/include/aclinux.h b/drivers/acpi/include/aclinux.h
index 0cf0e2845519..f86c83239823 100644
--- a/drivers/acpi/include/aclinux.h
+++ b/drivers/acpi/include/aclinux.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: aclinux.h - OS specific defines, etc.
- * $Revision: 7 $
+ * $Revision: 9 $
*
*****************************************************************************/
@@ -26,14 +26,15 @@
#ifndef __ACLINUX_H__
#define __ACLINUX_H__
-
#define ACPI_OS_NAME "Linux"
+#include <linux/config.h>
#include <linux/string.h>
#include <linux/kernel.h>
#include <linux/ctype.h>
#include <asm/system.h>
#include <asm/atomic.h>
+#include <asm/div64.h>
/* Linux uses GCC */
@@ -42,9 +43,14 @@
#undef DEBUGGER_THREADING
#define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED
-/* Linux ia32 can't do int64 well */
#ifndef _IA64
+/* Linux ia32 can't do int64 well */
#define ACPI_NO_INTEGER64_SUPPORT
+/* And the ia32 kernel doesn't include 64-bit divide support */
+#define ACPI_DIV64(dividend, divisor) do_div(dividend, divisor)
+#else
+#define ACPI_DIV64(dividend, divisor) ACPI_DIVIDE(dividend, divisor)
#endif
+
#endif /* __ACLINUX_H__ */
diff --git a/drivers/acpi/include/aclocal.h b/drivers/acpi/include/aclocal.h
index 2d931387ed90..d3ea8a429a23 100644
--- a/drivers/acpi/include/aclocal.h
+++ b/drivers/acpi/include/aclocal.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: aclocal.h - Internal data types used across the ACPI subsystem
- * $Revision: 100 $
+ * $Revision: 104 $
*
*****************************************************************************/
@@ -368,6 +368,23 @@ typedef struct acpi_update_state
} ACPI_UPDATE_STATE;
+
+/*
+ * Pkg state - used to traverse nested package structures
+ */
+typedef struct acpi_pkg_state
+{
+ ACPI_STATE_COMMON
+ union acpi_operand_obj *source_object;
+ union acpi_operand_obj *dest_object;
+ struct acpi_walk_state *walk_state;
+ void *this_target_obj;
+ u32 num_packages;
+ u16 index;
+
+} ACPI_PKG_STATE;
+
+
/*
* Control state - one per if/else and while constructs.
* Allows nesting of these constructs
@@ -428,6 +445,7 @@ typedef union acpi_gen_state
ACPI_UPDATE_STATE update;
ACPI_SCOPE_STATE scope;
ACPI_PSCOPE_STATE parse_scope;
+ ACPI_PKG_STATE pkg;
ACPI_RESULT_VALUES results;
} ACPI_GENERIC_STATE;
@@ -650,7 +668,6 @@ typedef struct acpi_init_walk_info
typedef struct acpi_device_walk_info
{
- u32 flags;
u16 device_count;
u16 num_STA;
u16 num_INI;
diff --git a/drivers/acpi/include/acnamesp.h b/drivers/acpi/include/acnamesp.h
index d6acb8444344..a8ef1e0d7fa1 100644
--- a/drivers/acpi/include/acnamesp.h
+++ b/drivers/acpi/include/acnamesp.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acnamesp.h - Namespace subcomponent prototypes and defines
- * $Revision: 101 $
+ * $Revision: 103 $
*
*****************************************************************************/
@@ -72,7 +72,7 @@ acpi_ns_initialize_objects (
ACPI_STATUS
acpi_ns_initialize_devices (
- u32 flags);
+ void);
/* Namespace init - nsxfinit */
@@ -317,6 +317,11 @@ acpi_ns_get_node (
ACPI_NAMESPACE_NODE *in_prefix_node,
ACPI_NAMESPACE_NODE **out_node);
+u32
+acpi_ns_get_pathname_length (
+ ACPI_NAMESPACE_NODE *node);
+
+
/*
* Object management for NTEs - nsobject
*/
diff --git a/drivers/acpi/include/acoutput.h b/drivers/acpi/include/acoutput.h
index 5c20943cba89..6939d9e7e04b 100644
--- a/drivers/acpi/include/acoutput.h
+++ b/drivers/acpi/include/acoutput.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acoutput.h -- debug output
- * $Revision: 69 $
+ * $Revision: 70 $
*
*****************************************************************************/
@@ -96,6 +96,7 @@
#define TRACE_USER_REQUESTS 0x01000000
#define TRACE_PACKAGE 0x02000000
#define TRACE_MUTEX 0x04000000
+#define TRACE_INIT 0x08000000
#define TRACE_ALL 0x0FFFFF00
diff --git a/drivers/acpi/include/actypes.h b/drivers/acpi/include/actypes.h
index 826fc89018ad..b5bbe9619fd7 100644
--- a/drivers/acpi/include/actypes.h
+++ b/drivers/acpi/include/actypes.h
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: actypes.h - Common data types for the entire ACPI subsystem
- * $Revision: 163 $
+ * $Revision: 165 $
*
*****************************************************************************/
@@ -237,8 +237,7 @@ typedef UINT64 ACPI_INTEGER;
#define ACPI_NO_EVENT_INIT 0x04
#define ACPI_NO_ACPI_ENABLE 0x08
#define ACPI_NO_DEVICE_INIT 0x10
-#define ACPI_NO_PCI_INIT 0x20
-#define ACPI_NO_OBJECT_INIT 0x40
+#define ACPI_NO_OBJECT_INIT 0x20
/*
@@ -1029,22 +1028,14 @@ typedef struct _resource_tag
* END: Definitions for Resource Attributes
*/
-/*
- * Definitions for PCI Routing tables
- */
-typedef struct
-{
- ACPI_INTEGER address;
- u32 pin;
- u32 source_index;
- NATIVE_CHAR source[1];
-
-} PRT_ENTRY;
-typedef struct _prt_tag
+typedef struct pci_routing_table
{
u32 length;
- PRT_ENTRY data;
+ u32 pin;
+ ACPI_INTEGER address; /* here for 64-bit alignment */
+ u32 source_index;
+ NATIVE_CHAR source[4]; /* pad to 64 bits so sizeof() works in all cases */
} PCI_ROUTING_TABLE;
diff --git a/drivers/acpi/interpreter/amfldio.c b/drivers/acpi/interpreter/amfldio.c
index 38b08abfaf4c..f02014c7e0de 100644
--- a/drivers/acpi/interpreter/amfldio.c
+++ b/drivers/acpi/interpreter/amfldio.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: amfldio - Aml Field I/O
- * $Revision: 37 $
+ * $Revision: 39 $
*
*****************************************************************************/
@@ -416,7 +416,7 @@ acpi_aml_write_field_data_with_update_rule (
/* Check if update rule needs to be applied (not if mask is all ones) */
/* The left shift drops the bits we want to ignore. */
- if ((~mask << (sizeof(mask)*8 - bit_granularity)) != 0) {
+ if ((~mask << (sizeof(mask)*8 - bit_granularity)) != 0) {
/*
* Read the current contents of the byte/word/dword containing
* the field, and merge with the new field value.
diff --git a/drivers/acpi/interpreter/amstore.c b/drivers/acpi/interpreter/amstore.c
index 9f350bb29d24..bb3c5c500a12 100644
--- a/drivers/acpi/interpreter/amstore.c
+++ b/drivers/acpi/interpreter/amstore.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: amstore - AML Interpreter object store support
- * $Revision: 121 $
+ * $Revision: 123 $
*
*****************************************************************************/
@@ -268,8 +268,7 @@ acpi_aml_store_object_to_index (
* If the source is a package, copy the source to the new dest
*/
if (ACPI_TYPE_PACKAGE == obj_desc->common.type) {
- status = acpi_aml_build_copy_internal_package_object (
- val_desc, obj_desc, walk_state);
+ status = acpi_cm_copy_ipackage_to_ipackage (val_desc, obj_desc, walk_state);
if (ACPI_FAILURE (status)) {
acpi_cm_remove_reference (obj_desc);
return (status);
diff --git a/drivers/acpi/interpreter/amstorob.c b/drivers/acpi/interpreter/amstorob.c
index 8118f08bd5e7..d71fe3eacf4f 100644
--- a/drivers/acpi/interpreter/amstorob.c
+++ b/drivers/acpi/interpreter/amstorob.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: amstorob - AML Interpreter object store support, store to object
- * $Revision: 22 $
+ * $Revision: 23 $
*
*****************************************************************************/
@@ -66,6 +66,19 @@ acpi_aml_copy_buffer_to_buffer (
length = source_desc->buffer.length;
/*
+ * If target is a buffer of length zero, allocate a new
+ * buffer of the proper length
+ */
+ if (target_desc->buffer.length == 0) {
+ target_desc->buffer.pointer = acpi_cm_allocate (length);
+ if (!target_desc->buffer.pointer) {
+ return (AE_NO_MEMORY);
+ }
+
+ target_desc->buffer.length = length;
+ }
+
+ /*
* Buffer is a static allocation,
* only place what will fit in the buffer.
*/
@@ -141,11 +154,11 @@ acpi_aml_copy_string_to_string (
}
target_desc->string.pointer = acpi_cm_allocate (length + 1);
- target_desc->string.length = length;
-
if (!target_desc->string.pointer) {
return (AE_NO_MEMORY);
}
+ target_desc->string.length = length;
+
MEMCPY(target_desc->string.pointer, buffer, length);
}
diff --git a/drivers/acpi/interpreter/amutils.c b/drivers/acpi/interpreter/amutils.c
index e3456099c00d..5edf578f783c 100644
--- a/drivers/acpi/interpreter/amutils.c
+++ b/drivers/acpi/interpreter/amutils.c
@@ -2,7 +2,7 @@
/******************************************************************************
*
* Module Name: amutils - interpreter/scanner utilities
- * $Revision: 68 $
+ * $Revision: 69 $
*
*****************************************************************************/
@@ -36,21 +36,6 @@
MODULE_NAME ("amutils")
-typedef struct internal_search_st
-{
- ACPI_OPERAND_OBJECT *dest_obj;
- u32 index;
- ACPI_OPERAND_OBJECT *source_obj;
-
-} INTERNAL_PKG_SEARCH_INFO;
-
-
-/* Used to traverse nested packages when copying*/
-/* TBD: This must be removed! */
-
-INTERNAL_PKG_SEARCH_INFO copy_level[MAX_PACKAGE_DEPTH];
-
-
/*******************************************************************************
*
* FUNCTION: Acpi_aml_enter_interpreter
@@ -383,153 +368,3 @@ acpi_aml_unsigned_integer_to_string (
}
-/*******************************************************************************
- *
- * FUNCTION: Acpi_aml_build_copy_internal_package_object
- *
- * PARAMETERS: *Source_obj - Pointer to the source package object
- * *Dest_obj - Where the internal object is returned
- *
- * RETURN: Status - the status of the call
- *
- * DESCRIPTION: This function is called to copy an internal package object
- * into another internal package object.
- *
- ******************************************************************************/
-
-ACPI_STATUS
-acpi_aml_build_copy_internal_package_object (
- ACPI_OPERAND_OBJECT *source_obj,
- ACPI_OPERAND_OBJECT *dest_obj,
- ACPI_WALK_STATE *walk_state)
-{
- u32 current_depth = 0;
- ACPI_STATUS status = AE_OK;
- u32 length = 0;
- u32 this_index;
- u32 object_space = 0;
- ACPI_OPERAND_OBJECT *this_dest_obj;
- ACPI_OPERAND_OBJECT *this_source_obj;
- INTERNAL_PKG_SEARCH_INFO *level_ptr;
-
-
- /*
- * Initialize the working variables
- */
-
- MEMSET ((void *) copy_level, 0, sizeof(copy_level));
-
- copy_level[0].dest_obj = dest_obj;
- copy_level[0].source_obj = source_obj;
- level_ptr = &copy_level[0];
- current_depth = 0;
-
- dest_obj->common.type = source_obj->common.type;
- dest_obj->package.count = source_obj->package.count;
-
-
- /*
- * Build an array of ACPI_OBJECTS in the buffer
- * and move the free space past it
- */
-
- dest_obj->package.elements = acpi_cm_callocate (
- (dest_obj->package.count + 1) *
- sizeof (void *));
- if (!dest_obj->package.elements) {
- /* Package vector allocation failure */
-
- REPORT_ERROR (("Aml_build_copy_internal_package_object: Package vector allocation failure\n"));
- return (AE_NO_MEMORY);
- }
-
- dest_obj->package.next_element = dest_obj->package.elements;
-
-
- while (1) {
- this_index = level_ptr->index;
- this_dest_obj = (ACPI_OPERAND_OBJECT *) level_ptr->dest_obj->package.elements[this_index];
- this_source_obj = (ACPI_OPERAND_OBJECT *) level_ptr->source_obj->package.elements[this_index];
-
- if (IS_THIS_OBJECT_TYPE (this_source_obj, ACPI_TYPE_PACKAGE)) {
- /*
- * If this object is a package then we go one deeper
- */
- if (current_depth >= MAX_PACKAGE_DEPTH-1) {
- /*
- * Too many nested levels of packages for us to handle
- */
- return (AE_LIMIT);
- }
-
- /*
- * Build the package object
- */
- this_dest_obj = acpi_cm_create_internal_object (ACPI_TYPE_PACKAGE);
- level_ptr->dest_obj->package.elements[this_index] = this_dest_obj;
-
-
- this_dest_obj->common.type = ACPI_TYPE_PACKAGE;
- this_dest_obj->package.count = this_dest_obj->package.count;
-
- /*
- * Save space for the array of objects (Package elements)
- * update the buffer length counter
- */
- object_space = this_dest_obj->package.count *
- sizeof (ACPI_OPERAND_OBJECT);
- length += object_space;
- current_depth++;
- level_ptr = &copy_level[current_depth];
- level_ptr->dest_obj = this_dest_obj;
- level_ptr->source_obj = this_source_obj;
- level_ptr->index = 0;
-
- } /* if object is a package */
-
- else {
-
- this_dest_obj = acpi_cm_create_internal_object (
- this_source_obj->common.type);
- level_ptr->dest_obj->package.elements[this_index] = this_dest_obj;
-
- status = acpi_aml_store_object_to_object(this_source_obj, this_dest_obj, walk_state);
-
- if (ACPI_FAILURE (status)) {
- /*
- * Failure get out
- */
- return (status);
- }
-
- length +=object_space;
-
- level_ptr->index++;
- while (level_ptr->index >= level_ptr->dest_obj->package.count) {
- /*
- * We've handled all of the objects at this level, This means
- * that we have just completed a package. That package may
- * have contained one or more packages itself
- */
- if (current_depth == 0) {
- /*
- * We have handled all of the objects in the top level
- * package just add the length of the package objects
- * and exit
- */
- return (AE_OK);
- }
-
- /*
- * Go back up a level and move the index past the just
- * completed package object.
- */
- current_depth--;
- level_ptr = &copy_level[current_depth];
- level_ptr->index++;
- }
- } /* else object is NOT a package */
- } /* while (1) */
-}
-
-
diff --git a/drivers/acpi/namespace/nseval.c b/drivers/acpi/namespace/nseval.c
index 6c040d22e271..155c63808252 100644
--- a/drivers/acpi/namespace/nseval.c
+++ b/drivers/acpi/namespace/nseval.c
@@ -2,7 +2,7 @@
*
* Module Name: nseval - Object evaluation interfaces -- includes control
* method lookup and execution.
- * $Revision: 81 $
+ * $Revision: 83 $
*
******************************************************************************/
@@ -253,8 +253,8 @@ acpi_ns_evaluate_by_handle (
node = acpi_ns_convert_handle_to_entry (handle);
if (!node) {
- status = AE_BAD_PARAMETER;
- goto unlock_and_exit;
+ acpi_cm_release_mutex (ACPI_MTX_NAMESPACE);
+ return (AE_BAD_PARAMETER);
}
@@ -316,12 +316,6 @@ acpi_ns_evaluate_by_handle (
* so we just return
*/
return (status);
-
-
-unlock_and_exit:
-
- acpi_cm_release_mutex (ACPI_MTX_NAMESPACE);
- return (status);
}
@@ -354,14 +348,6 @@ acpi_ns_execute_control_method (
ACPI_OPERAND_OBJECT *obj_desc;
- /* Verify that there is a method associated with this object */
-
- obj_desc = acpi_ns_get_attached_object ((ACPI_HANDLE) method_node);
- if (!obj_desc) {
- return (AE_ERROR);
- }
-
-
/*
* Unlock the namespace before execution. This allows namespace access
* via the external Acpi* interfaces while a method is being executed.
@@ -372,8 +358,16 @@ acpi_ns_execute_control_method (
acpi_cm_release_mutex (ACPI_MTX_NAMESPACE);
+ /* Verify that there is a method associated with this object */
+
+ obj_desc = acpi_ns_get_attached_object ((ACPI_HANDLE) method_node);
+ if (!obj_desc) {
+ return (AE_ERROR);
+ }
+
+
/*
- * Excecute the method via the interpreter
+ * Execute the method via the interpreter
*/
status = acpi_aml_execute_method (method_node, params, return_obj_desc);
diff --git a/drivers/acpi/namespace/nsinit.c b/drivers/acpi/namespace/nsinit.c
index 76b535205fe0..2a1daa85cc94 100644
--- a/drivers/acpi/namespace/nsinit.c
+++ b/drivers/acpi/namespace/nsinit.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: nsinit - namespace initialization
- * $Revision: 12 $
+ * $Revision: 15 $
*
*****************************************************************************/
@@ -89,13 +89,12 @@ acpi_ns_initialize_objects (
ACPI_STATUS
acpi_ns_initialize_devices (
- u32 flags)
+ void)
{
ACPI_STATUS status;
ACPI_DEVICE_WALK_INFO info;
- info.flags = flags;
info.device_count = 0;
info.num_STA = 0;
info.num_INI = 0;
@@ -168,6 +167,7 @@ acpi_ns_init_one_object (
info->op_region_init++;
status = acpi_ds_get_region_arguments (obj_desc);
+
break;
@@ -180,6 +180,8 @@ acpi_ns_init_one_object (
info->field_init++;
status = acpi_ds_get_field_unit_arguments (obj_desc);
+
+
break;
default:
@@ -198,7 +200,7 @@ acpi_ns_init_one_object (
*
* FUNCTION: Acpi_ns_init_one_device
*
- * PARAMETERS: The usual "I'm a namespace callback" stuff
+ * PARAMETERS: WALK_CALLBACK
*
* RETURN: ACPI_STATUS
*
@@ -221,6 +223,7 @@ acpi_ns_init_one_device (
ACPI_DEVICE_WALK_INFO *info = (ACPI_DEVICE_WALK_INFO *) context;
+
info->device_count++;
acpi_cm_acquire_mutex (ACPI_MTX_NAMESPACE);
@@ -251,6 +254,7 @@ acpi_ns_init_one_device (
return(AE_CTRL_DEPTH);
}
+
/*
* The device is present. Run _INI.
*/
diff --git a/drivers/acpi/namespace/nsnames.c b/drivers/acpi/namespace/nsnames.c
index c2fb4916378d..50c46a9dcb46 100644
--- a/drivers/acpi/namespace/nsnames.c
+++ b/drivers/acpi/namespace/nsnames.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: nsnames - Name manipulation and search
- * $Revision: 53 $
+ * $Revision: 54 $
*
******************************************************************************/
@@ -115,6 +115,46 @@ acpi_ns_get_table_pathname (
/*******************************************************************************
*
+ * FUNCTION: Acpi_ns_get_pathname_length
+ *
+ * PARAMETERS: Node - Namespace node
+ *
+ * RETURN: Length of path, including prefix
+ *
+ * DESCRIPTION: Get the length of the pathname string for this node
+ *
+ ******************************************************************************/
+
+u32
+acpi_ns_get_pathname_length (
+ ACPI_NAMESPACE_NODE *node)
+{
+ u32 size;
+ ACPI_NAMESPACE_NODE *next_node;
+
+ /*
+ * Compute length of pathname as 5 * number of name segments.
+ * Go back up the parent tree to the root
+ */
+ for (size = 0, next_node = node;
+ acpi_ns_get_parent_object (next_node);
+ next_node = acpi_ns_get_parent_object (next_node))
+ {
+ size += PATH_SEGMENT_LENGTH;
+ }
+
+ /* Special case for size still 0 - no parent for "special" nodes */
+
+ if (!size) {
+ size = PATH_SEGMENT_LENGTH;
+ }
+
+ return (size + 1);
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: Acpi_ns_handle_to_pathname
*
* PARAMETERS: Target_handle - Handle of named object whose name is
@@ -138,11 +178,10 @@ acpi_ns_handle_to_pathname (
{
ACPI_STATUS status = AE_OK;
ACPI_NAMESPACE_NODE *node;
- ACPI_NAMESPACE_NODE *next_node;
u32 path_length;
- u32 size;
u32 user_buf_size;
ACPI_NAME name;
+ u32 size;
if (!acpi_gbl_root_node || !target_handle) {
@@ -159,26 +198,12 @@ acpi_ns_handle_to_pathname (
return (AE_BAD_PARAMETER);
}
- /*
- * Compute length of pathname as 5 * number of name segments.
- * Go back up the parent tree to the root
- */
- for (size = 0, next_node = node;
- acpi_ns_get_parent_object (next_node);
- next_node = acpi_ns_get_parent_object (next_node))
- {
- size += PATH_SEGMENT_LENGTH;
- }
-
- /* Special case for size still 0 - no parent for "special" nodes */
-
- if (!size) {
- size = PATH_SEGMENT_LENGTH;
- }
/* Set return length to the required path length */
- path_length = size + 1;
+ path_length = acpi_ns_get_pathname_length (node);
+ size = path_length - 1;
+
user_buf_size = *buf_size;
*buf_size = path_length;
diff --git a/drivers/acpi/namespace/nsxfobj.c b/drivers/acpi/namespace/nsxfobj.c
index 742c5da6620a..b2c3dba3a3c6 100644
--- a/drivers/acpi/namespace/nsxfobj.c
+++ b/drivers/acpi/namespace/nsxfobj.c
@@ -2,7 +2,7 @@
*
* Module Name: nsxfobj - Public interfaces to the ACPI subsystem
* ACPI Object oriented interfaces
- * $Revision: 78 $
+ * $Revision: 80 $
*
******************************************************************************/
@@ -117,9 +117,8 @@ acpi_evaluate_object (
* internal object
*/
for (i = 0; i < count; i++) {
- status =
- acpi_cm_build_internal_object (&param_objects->pointer[i],
- param_ptr[i]);
+ status = acpi_cm_copy_eobject_to_iobject (&param_objects->pointer[i],
+ param_ptr[i]);
if (ACPI_FAILURE (status)) {
acpi_cm_delete_internal_object_list (param_ptr);
@@ -236,7 +235,7 @@ acpi_evaluate_object (
/*
* We have enough space for the object, build it
*/
- status = acpi_cm_build_external_object (return_obj,
+ status = acpi_cm_copy_iobject_to_eobject (return_obj,
return_buffer);
return_buffer->length = buffer_space_needed;
}
@@ -580,13 +579,13 @@ acpi_ns_get_device_callback (
acpi_cm_acquire_mutex (ACPI_MTX_NAMESPACE);
node = acpi_ns_convert_handle_to_entry (obj_handle);
+
+ acpi_cm_release_mutex (ACPI_MTX_NAMESPACE);
+
if (!node) {
- acpi_cm_release_mutex (ACPI_MTX_NAMESPACE);
return (AE_BAD_PARAMETER);
}
- acpi_cm_release_mutex (ACPI_MTX_NAMESPACE);
-
/*
* Run _STA to determine if device is present
*/
diff --git a/drivers/acpi/resources/rscalc.c b/drivers/acpi/resources/rscalc.c
index 86ff91be87c5..bfceeac8baf9 100644
--- a/drivers/acpi/resources/rscalc.c
+++ b/drivers/acpi/resources/rscalc.c
@@ -2,7 +2,7 @@
*
* Module Name: rscalc - Acpi_rs_calculate_byte_stream_length
* Acpi_rs_calculate_list_length
- * $Revision: 18 $
+ * $Revision: 21 $
*
******************************************************************************/
@@ -27,6 +27,8 @@
#include "acpi.h"
#include "acresrc.h"
+#include "amlcode.h"
+#include "acnamesp.h"
#define _COMPONENT RESOURCE_MANAGER
MODULE_NAME ("rscalc")
@@ -704,6 +706,7 @@ acpi_rs_calculate_list_length (
*/
bytes_consumed = 2;
structure_size = RESOURCE_LENGTH;
+ byte_stream_buffer_length = bytes_parsed;
break;
@@ -810,7 +813,10 @@ acpi_rs_calculate_pci_routing_table_length (
name_found = FALSE;
for (table_index = 0; table_index < 4 && !name_found; table_index++) {
- if (ACPI_TYPE_STRING == (*sub_object_list)->common.type) {
+ if ((ACPI_TYPE_STRING == (*sub_object_list)->common.type) ||
+ ((INTERNAL_TYPE_REFERENCE == (*sub_object_list)->common.type) &&
+ ((*sub_object_list)->reference.op_code == AML_NAMEPATH_OP)))
+ {
name_found = TRUE;
}
@@ -822,17 +828,22 @@ acpi_rs_calculate_pci_routing_table_length (
}
}
- temp_size_needed += (sizeof (PCI_ROUTING_TABLE) - 1);
+ temp_size_needed += (sizeof (PCI_ROUTING_TABLE) - 4);
/*
* Was a String type found?
*/
if (TRUE == name_found) {
- /*
- * The length String.Length field includes the
- * terminating NULL
- */
- temp_size_needed += (*sub_object_list)->string.length;
+ if (ACPI_TYPE_STRING == (*sub_object_list)->common.type) {
+ /*
+ * The length String.Length field includes the
+ * terminating NULL
+ */
+ temp_size_needed += (*sub_object_list)->string.length;
+ }
+ else {
+ temp_size_needed += acpi_ns_get_pathname_length ((*sub_object_list)->reference.node);
+ }
}
else {
@@ -855,7 +866,7 @@ acpi_rs_calculate_pci_routing_table_length (
}
- *buffer_size_needed = temp_size_needed + sizeof (PCI_ROUTING_TABLE);
+ *buffer_size_needed = temp_size_needed;
return (AE_OK);
}
diff --git a/drivers/acpi/resources/rscreate.c b/drivers/acpi/resources/rscreate.c
index f221a41dc290..234684edb092 100644
--- a/drivers/acpi/resources/rscreate.c
+++ b/drivers/acpi/resources/rscreate.c
@@ -3,7 +3,7 @@
* Module Name: rscreate - Acpi_rs_create_resource_list
* Acpi_rs_create_pci_routing_table
* Acpi_rs_create_byte_stream
- * $Revision: 24 $
+ * $Revision: 25 $
*
******************************************************************************/
@@ -28,6 +28,8 @@
#include "acpi.h"
#include "acresrc.h"
+#include "amlcode.h"
+#include "acnamesp.h"
#define _COMPONENT RESOURCE_MANAGER
MODULE_NAME ("rscreate")
@@ -157,6 +159,7 @@ acpi_rs_create_pci_routing_table (
u32 number_of_elements = 0;
u32 index = 0;
PCI_ROUTING_TABLE *user_prt = NULL;
+ ACPI_NAMESPACE_NODE *node;
ACPI_STATUS status;
@@ -203,10 +206,10 @@ acpi_rs_create_pci_routing_table (
/*
* Fill in the Length field with the information we
* have at this point.
- * The minus one is to subtract the size of the
- * u8 Source[1] member because it is added below.
+ * The minus four is to subtract the size of the
+ * u8 Source[4] member because it is added below.
*/
- user_prt->length = (sizeof (PCI_ROUTING_TABLE) - 1);
+ user_prt->length = (sizeof (PCI_ROUTING_TABLE) -4);
/*
* Dereference the sub-package
@@ -221,11 +224,10 @@ acpi_rs_create_pci_routing_table (
sub_object_list = package_element->package.elements;
/*
- * Dereference the Address
+ * 1) First subobject: Dereference the Address
*/
if (ACPI_TYPE_INTEGER == (*sub_object_list)->common.type) {
- user_prt->data.address =
- (*sub_object_list)->integer.value;
+ user_prt->address = (*sub_object_list)->integer.value;
}
else {
@@ -233,12 +235,12 @@ acpi_rs_create_pci_routing_table (
}
/*
- * Dereference the Pin
+ * 2) Second subobject: Dereference the Pin
*/
sub_object_list++;
if (ACPI_TYPE_INTEGER == (*sub_object_list)->common.type) {
- user_prt->data.pin =
+ user_prt->pin =
(u32) (*sub_object_list)->integer.value;
}
@@ -247,37 +249,57 @@ acpi_rs_create_pci_routing_table (
}
/*
- * Dereference the Source Name
+ * 3) Third subobject: Dereference the Source Name
*/
sub_object_list++;
- if (ACPI_TYPE_STRING == (*sub_object_list)->common.type) {
- STRCPY (user_prt->data.source,
+ switch ((*sub_object_list)->common.type)
+ {
+ case INTERNAL_TYPE_REFERENCE:
+ if ((*sub_object_list)->reference.op_code != AML_NAMEPATH_OP) {
+ return (AE_BAD_DATA);
+ }
+
+ node = (*sub_object_list)->reference.node;
+
+ /* TBD: use *remaining* length of the buffer! */
+
+ status = acpi_ns_handle_to_pathname ((ACPI_HANDLE *) node,
+ output_buffer_length, user_prt->source);
+
+ user_prt->length += STRLEN (user_prt->source) + 1; /* include null terminator */
+ break;
+
+
+ case ACPI_TYPE_STRING:
+
+ STRCPY (user_prt->source,
(*sub_object_list)->string.pointer);
/*
* Add to the Length field the length of the string
*/
user_prt->length += (*sub_object_list)->string.length;
- }
+ break;
- else {
+
+ case ACPI_TYPE_INTEGER:
/*
* If this is a number, then the Source Name
* is NULL, since the entire buffer was zeroed
* out, we can leave this alone.
*/
- if (ACPI_TYPE_INTEGER == (*sub_object_list)->common.type) {
- /*
- * Add to the Length field the length of
- * the u32 NULL
- */
- user_prt->length += sizeof (u32);
- }
+ /*
+ * Add to the Length field the length of
+ * the u32 NULL
+ */
+ user_prt->length += sizeof (u32);
+ break;
- else {
- return (AE_BAD_DATA);
- }
+
+ default:
+ return (AE_BAD_DATA);
+ break;
}
/* Now align the current length */
@@ -285,12 +307,12 @@ acpi_rs_create_pci_routing_table (
user_prt->length = ROUND_UP_TO_64_bITS (user_prt->length);
/*
- * Dereference the Source Index
+ * 4) Fourth subobject: Dereference the Source Index
*/
sub_object_list++;
if (ACPI_TYPE_INTEGER == (*sub_object_list)->common.type) {
- user_prt->data.source_index =
+ user_prt->source_index =
(u32) (*sub_object_list)->integer.value;
}
diff --git a/drivers/acpi/resources/rsdump.c b/drivers/acpi/resources/rsdump.c
index 03d2da6f2150..367648afef02 100644
--- a/drivers/acpi/resources/rsdump.c
+++ b/drivers/acpi/resources/rsdump.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: rsdump - Functions do dump out the resource structures.
- * $Revision: 15 $
+ * $Revision: 16 $
*
******************************************************************************/
@@ -910,24 +910,24 @@ acpi_rs_dump_irq_list (
if (acpi_dbg_level & TRACE_RESOURCES && _COMPONENT & acpi_dbg_layer) {
- prt_element = (PCI_ROUTING_TABLE *)buffer;
+ prt_element = (PCI_ROUTING_TABLE *) buffer;
while (!done) {
acpi_os_printf ("\t_pCI IRQ Routing Table structure %X.\n", count++);
acpi_os_printf ("\t\t_address: %X\n",
- prt_element->data.address);
+ prt_element->address);
- acpi_os_printf ("\t\t_pin: %X\n", prt_element->data.pin);
+ acpi_os_printf ("\t\t_pin: %X\n", prt_element->pin);
- acpi_os_printf ("\t\t_source: %s\n", prt_element->data.source);
+ acpi_os_printf ("\t\t_source: %s\n", prt_element->source);
acpi_os_printf ("\t\t_source_index: %X\n",
- prt_element->data.source_index);
+ prt_element->source_index);
buffer += prt_element->length;
- prt_element = (PCI_ROUTING_TABLE *)buffer;
+ prt_element = (PCI_ROUTING_TABLE *) buffer;
if(0 == prt_element->length) {
done = TRUE;
diff --git a/drivers/acpi/resources/rslist.c b/drivers/acpi/resources/rslist.c
index de47563d0f8e..048db65a4644 100644
--- a/drivers/acpi/resources/rslist.c
+++ b/drivers/acpi/resources/rslist.c
@@ -2,7 +2,7 @@
*
* Module Name: rslist - Acpi_rs_byte_stream_to_list
* Acpi_list_to_byte_stream
- * $Revision: 10 $
+ * $Revision: 11 $
*
******************************************************************************/
@@ -302,9 +302,7 @@ acpi_rs_byte_stream_to_list (
/*
* Check the reason for exiting the while loop
*/
- if (!(byte_stream_buffer_length == bytes_parsed) ||
- (TRUE != end_tag_processed))
- {
+ if (TRUE != end_tag_processed) {
return (AE_AML_ERROR);
}
diff --git a/drivers/acpi/tables/tbconvrt.c b/drivers/acpi/tables/tbconvrt.c
index 76d7fff15c47..fd57f3eb7273 100644
--- a/drivers/acpi/tables/tbconvrt.c
+++ b/drivers/acpi/tables/tbconvrt.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbconvrt - ACPI Table conversion utilities
- * $Revision: 18 $
+ * $Revision: 19 $
*
*****************************************************************************/
diff --git a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c
index 8ff6e5545611..cf24ef71e68a 100644
--- a/drivers/atm/fore200e.c
+++ b/drivers/atm/fore200e.c
@@ -28,7 +28,7 @@
#include <linux/version.h>
#include <linux/config.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/capability.h>
#include <linux/sched.h>
diff --git a/drivers/block/DAC960.c b/drivers/block/DAC960.c
index d0aac4c7d15a..fa5eae623488 100644
--- a/drivers/block/DAC960.c
+++ b/drivers/block/DAC960.c
@@ -34,7 +34,7 @@
#include <linux/ioport.h>
#include <linux/locks.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/proc_fs.h>
#include <linux/reboot.h>
#include <linux/spinlock.h>
diff --git a/drivers/block/acsi.c b/drivers/block/acsi.c
index fd3101f7f802..d9a09e3a274b 100644
--- a/drivers/block/acsi.c
+++ b/drivers/block/acsi.c
@@ -59,7 +59,7 @@
#include <linux/mm.h>
#include <linux/major.h>
#include <linux/blk.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/interrupt.h>
#include <scsi/scsi.h> /* for SCSI_IOCTL_GET_IDLUN */
typedef void Scsi_Device; /* hack to avoid including scsi.h */
diff --git a/drivers/block/acsi_slm.c b/drivers/block/acsi_slm.c
index 35bab96feb18..6dadacb4d45e 100644
--- a/drivers/block/acsi_slm.c
+++ b/drivers/block/acsi_slm.c
@@ -64,7 +64,7 @@ not be guaranteed. There are several ways to assure this:
#include <linux/interrupt.h>
#include <linux/time.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/smp_lock.h>
diff --git a/drivers/block/ataflop.c b/drivers/block/ataflop.c
index 9f0d031a877f..4d7c512f4d71 100644
--- a/drivers/block/ataflop.c
+++ b/drivers/block/ataflop.c
@@ -74,7 +74,7 @@
#include <linux/types.h>
#include <linux/delay.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <asm/setup.h>
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index 4dde72c33133..c02092272523 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -26,7 +26,7 @@
#include <linux/types.h>
#include <linux/pci.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/major.h>
#include <linux/fs.h>
diff --git a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c
index 427236c30718..b190e8ae7737 100644
--- a/drivers/block/cpqarray.c
+++ b/drivers/block/cpqarray.c
@@ -28,7 +28,7 @@
#include <linux/types.h>
#include <linux/pci.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/major.h>
#include <linux/fs.h>
diff --git a/drivers/block/cpqarray.h b/drivers/block/cpqarray.h
index de569c7de2d0..352986d04634 100644
--- a/drivers/block/cpqarray.h
+++ b/drivers/block/cpqarray.h
@@ -28,7 +28,7 @@
#ifdef __KERNEL__
#include <linux/blkdev.h>
#include <linux/locks.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/proc_fs.h>
#include <linux/timer.h>
#endif
diff --git a/drivers/block/elevator.c b/drivers/block/elevator.c
index 9917ad055a6d..3df8aab7f497 100644
--- a/drivers/block/elevator.c
+++ b/drivers/block/elevator.c
@@ -46,6 +46,8 @@ int elevator_linus_merge(request_queue_t *q, struct request **req,
break;
}
+ if (!*req && BHRQ_IN_ORDER(bh, __rq))
+ *req = __rq;
if (__rq->sem)
continue;
if (__rq->cmd != rw)
@@ -65,8 +67,7 @@ int elevator_linus_merge(request_queue_t *q, struct request **req,
__rq->elevator_sequence -= count;
*req = __rq;
break;
- } else if (!*req && BHRQ_IN_ORDER(bh, __rq))
- *req = __rq;
+ }
}
return ret;
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
index 613841745fbc..4e569fa9f90b 100644
--- a/drivers/block/floppy.c
+++ b/drivers/block/floppy.c
@@ -152,7 +152,7 @@ static int print_unex=1;
#include <linux/hdreg.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/string.h>
#include <linux/fcntl.h>
diff --git a/drivers/block/ll_rw_blk.c b/drivers/block/ll_rw_blk.c
index 5e8ba90530f2..dfcfbab096cf 100644
--- a/drivers/block/ll_rw_blk.c
+++ b/drivers/block/ll_rw_blk.c
@@ -576,8 +576,6 @@ inline void drive_stat_acct (kdev_t dev, int rw,
static inline void add_request(request_queue_t * q, struct request * req,
struct list_head *insert_here)
{
- int major;
-
drive_stat_acct(req->rq_dev, req->cmd, req->nr_sectors, 1);
if (!q->plugged && q->head_active && insert_here == &q->queue_head) {
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index 969147a35168..956d460427bd 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -75,7 +75,7 @@
#define TIMEOUT_VALUE (6 * HZ)
#include <linux/blk.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
static int max_loop = 8;
static struct loop_device *loop_dev;
static int *loop_sizes;
diff --git a/drivers/block/paride/pg.c b/drivers/block/paride/pg.c
index 914bfa23cfb3..916cfb7470fc 100644
--- a/drivers/block/paride/pg.c
+++ b/drivers/block/paride/pg.c
@@ -167,7 +167,7 @@ static int pg_drive_count;
#include <linux/devfs_fs_kernel.h>
#include <linux/kernel.h>
#include <linux/delay.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mtio.h>
#include <linux/pg.h>
#include <linux/wait.h>
diff --git a/drivers/block/paride/pt.c b/drivers/block/paride/pt.c
index c5dbb73ad64a..870c6bc18325 100644
--- a/drivers/block/paride/pt.c
+++ b/drivers/block/paride/pt.c
@@ -146,7 +146,7 @@ static int pt_drive_count;
#include <linux/devfs_fs_kernel.h>
#include <linux/kernel.h>
#include <linux/delay.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mtio.h>
#include <linux/wait.h>
#include <linux/smp_lock.h>
diff --git a/drivers/block/rd.c b/drivers/block/rd.c
index 1799ccef536e..503913bf3228 100644
--- a/drivers/block/rd.c
+++ b/drivers/block/rd.c
@@ -53,7 +53,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/mman.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioctl.h>
#include <linux/fd.h>
#include <linux/module.h>
diff --git a/drivers/block/z2ram.c b/drivers/block/z2ram.c
index 5aedc25439e8..c6ef9788489b 100644
--- a/drivers/block/z2ram.c
+++ b/drivers/block/z2ram.c
@@ -28,7 +28,7 @@
#define MAJOR_NR Z2RAM_MAJOR
#include <linux/major.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/blk.h>
#include <linux/init.h>
diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c
index cafe72afd32c..af5834ca91cd 100644
--- a/drivers/cdrom/cdrom.c
+++ b/drivers/cdrom/cdrom.c
@@ -259,7 +259,7 @@
#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/cdrom.h>
#include <linux/sysctl.h>
#include <linux/proc_fs.h>
diff --git a/drivers/cdrom/cdu31a.c b/drivers/cdrom/cdu31a.c
index 8b969818b5a1..5f48b5099e78 100644
--- a/drivers/cdrom/cdu31a.c
+++ b/drivers/cdrom/cdu31a.c
@@ -164,7 +164,7 @@
#include <linux/ioport.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/interrupt.h>
diff --git a/drivers/cdrom/cm206.c b/drivers/cdrom/cm206.c
index c0db3056078a..ab8963fbb332 100644
--- a/drivers/cdrom/cm206.c
+++ b/drivers/cdrom/cm206.c
@@ -190,7 +190,7 @@ History:
#include <linux/devfs_fs_kernel.h>
#include <linux/ioport.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
/* #include <linux/ucdrom.h> */
diff --git a/drivers/cdrom/gscd.c b/drivers/cdrom/gscd.c
index 0e8940117499..af8e2e33d7b7 100644
--- a/drivers/cdrom/gscd.c
+++ b/drivers/cdrom/gscd.c
@@ -50,7 +50,7 @@
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
#include <linux/signal.h>
#include <linux/sched.h>
diff --git a/drivers/cdrom/mcdx.c b/drivers/cdrom/mcdx.c
index 160261406d43..ad36f0135b7d 100644
--- a/drivers/cdrom/mcdx.c
+++ b/drivers/cdrom/mcdx.c
@@ -66,7 +66,7 @@ static const char *mcdx_c_version
#include <linux/cdrom.h>
#include <linux/ioport.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <asm/io.h>
#include <asm/uaccess.h>
diff --git a/drivers/cdrom/sonycd535.c b/drivers/cdrom/sonycd535.c
index 15bcacd85d9a..a66fb5651284 100644
--- a/drivers/cdrom/sonycd535.c
+++ b/drivers/cdrom/sonycd535.c
@@ -122,7 +122,7 @@
#include <linux/hdreg.h>
#include <linux/genhd.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/devfs_fs_kernel.h>
diff --git a/drivers/char/acquirewdt.c b/drivers/char/acquirewdt.c
index 272296b69479..a58e43e86f7f 100644
--- a/drivers/char/acquirewdt.c
+++ b/drivers/char/acquirewdt.c
@@ -28,7 +28,7 @@
#include <linux/sched.h>
#include <linux/miscdevice.h>
#include <linux/watchdog.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/fcntl.h>
#include <asm/io.h>
diff --git a/drivers/char/agp/agpgart_be.c b/drivers/char/agp/agpgart_be.c
index ccd53dacce7b..399c6f118cde 100644
--- a/drivers/char/agp/agpgart_be.c
+++ b/drivers/char/agp/agpgart_be.c
@@ -32,7 +32,7 @@
#include <linux/mm.h>
#include <linux/string.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/pci.h>
#include <linux/init.h>
diff --git a/drivers/char/agp/agpgart_fe.c b/drivers/char/agp/agpgart_fe.c
index d16c62a22d8e..af15aa8a7c6a 100644
--- a/drivers/char/agp/agpgart_fe.c
+++ b/drivers/char/agp/agpgart_fe.c
@@ -33,7 +33,7 @@
#include <linux/mm.h>
#include <linux/string.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/pci.h>
#include <linux/init.h>
diff --git a/drivers/char/amiserial.c b/drivers/char/amiserial.c
index fdcfe7805d4f..0504e0d141e9 100644
--- a/drivers/char/amiserial.c
+++ b/drivers/char/amiserial.c
@@ -85,7 +85,7 @@ static char *serial_version = "4.30";
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/delay.h>
diff --git a/drivers/char/applicom.c b/drivers/char/applicom.c
index 63f26cc0fdfb..2b3f282d00df 100644
--- a/drivers/char/applicom.c
+++ b/drivers/char/applicom.c
@@ -22,7 +22,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/errno.h>
#include <asm/io.h>
#include <asm/uaccess.h>
diff --git a/drivers/char/busmouse.c b/drivers/char/busmouse.c
index 9a983bb3e3bf..fb016439c73f 100644
--- a/drivers/char/busmouse.c
+++ b/drivers/char/busmouse.c
@@ -12,7 +12,7 @@
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/signal.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
#include <linux/mm.h>
#include <linux/poll.h>
diff --git a/drivers/char/console.c b/drivers/char/console.c
index 0285eab79d24..2697cf5a6f36 100644
--- a/drivers/char/console.c
+++ b/drivers/char/console.c
@@ -79,7 +79,7 @@
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/kd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/major.h>
#include <linux/mm.h>
#include <linux/console.h>
diff --git a/drivers/char/consolemap.c b/drivers/char/consolemap.c
index 272074936ed3..bf55df922e45 100644
--- a/drivers/char/consolemap.c
+++ b/drivers/char/consolemap.c
@@ -14,8 +14,9 @@
#include <linux/kd.h>
#include <linux/errno.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
+#include <linux/tty.h>
#include <asm/uaccess.h>
#include <linux/consolemap.h>
#include <linux/console_struct.h>
diff --git a/drivers/char/dsp56k.c b/drivers/char/dsp56k.c
index 535566b6352d..7de536f7708b 100644
--- a/drivers/char/dsp56k.c
+++ b/drivers/char/dsp56k.c
@@ -25,7 +25,7 @@
#include <linux/module.h>
#include <linux/version.h>
-#include <linux/malloc.h> /* for kmalloc() and kfree() */
+#include <linux/slab.h> /* for kmalloc() and kfree() */
#include <linux/sched.h> /* for struct wait_queue etc */
#include <linux/major.h>
#include <linux/types.h>
diff --git a/drivers/char/dz.c b/drivers/char/dz.c
index dd2b50d8cc8b..ff7627098d51 100644
--- a/drivers/char/dz.c
+++ b/drivers/char/dz.c
@@ -33,7 +33,7 @@
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/major.h>
#include <linux/param.h>
diff --git a/drivers/char/esp.c b/drivers/char/esp.c
index 6e575c3dd4b0..f519312205b8 100644
--- a/drivers/char/esp.c
+++ b/drivers/char/esp.c
@@ -61,7 +61,7 @@
#include <asm/bitops.h>
#include <asm/dma.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/uaccess.h>
#include <linux/hayesesp.h>
diff --git a/drivers/char/ftape/lowlevel/ftape-buffer.c b/drivers/char/ftape/lowlevel/ftape-buffer.c
index 02fe29dac1cf..a18b8681768f 100644
--- a/drivers/char/ftape/lowlevel/ftape-buffer.c
+++ b/drivers/char/ftape/lowlevel/ftape-buffer.c
@@ -25,7 +25,7 @@
*/
#include <asm/segment.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/mman.h>
#include <linux/wrapper.h>
diff --git a/drivers/char/ftape/zftape/zftape-buffers.c b/drivers/char/ftape/zftape/zftape-buffers.c
index f3dace343a9e..58197e42918c 100644
--- a/drivers/char/ftape/zftape/zftape-buffers.c
+++ b/drivers/char/ftape/zftape/zftape-buffers.c
@@ -26,7 +26,7 @@
#include <linux/errno.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/segment.h>
#include <linux/zftape.h>
diff --git a/drivers/char/ftape/zftape/zftape-init.c b/drivers/char/ftape/zftape/zftape-init.c
index a57e3abc1967..1f8e4edaab07 100644
--- a/drivers/char/ftape/zftape/zftape-init.c
+++ b/drivers/char/ftape/zftape/zftape-init.c
@@ -29,7 +29,7 @@
#include <linux/kernel.h>
#include <linux/signal.h>
#include <linux/major.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#ifdef CONFIG_KMOD
#include <linux/kmod.h>
#endif
diff --git a/drivers/char/ftape/zftape/zftape-vtbl.c b/drivers/char/ftape/zftape/zftape-vtbl.c
index e4804ea2edc5..aa64ca7d1385 100644
--- a/drivers/char/ftape/zftape/zftape-vtbl.c
+++ b/drivers/char/ftape/zftape/zftape-vtbl.c
@@ -30,7 +30,7 @@
#include <linux/errno.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/segment.h>
#include <linux/zftape.h>
diff --git a/drivers/char/ip2main.c b/drivers/char/ip2main.c
index a5e3adca6f06..7cc4acb0067a 100644
--- a/drivers/char/ip2main.c
+++ b/drivers/char/ip2main.c
@@ -75,7 +75,7 @@
#include <linux/interrupt.h>
#include <linux/pci.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/major.h>
#include <linux/wait.h>
diff --git a/drivers/char/istallion.c b/drivers/char/istallion.c
index bd6caa775cfd..ea4686691ec5 100644
--- a/drivers/char/istallion.c
+++ b/drivers/char/istallion.c
@@ -28,8 +28,9 @@
#include <linux/config.h>
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/interrupt.h>
+#include <linux/tty.h>
#include <linux/tty_flip.h>
#include <linux/serial.h>
#include <linux/cdk.h>
diff --git a/drivers/char/joystick/a3d.c b/drivers/char/joystick/a3d.c
index bd17f8de2c57..09642a9e7289 100644
--- a/drivers/char/joystick/a3d.c
+++ b/drivers/char/joystick/a3d.c
@@ -32,7 +32,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/gameport.h>
#include <linux/input.h>
diff --git a/drivers/char/joystick/adi.c b/drivers/char/joystick/adi.c
index a2f68d74eb05..5bdf269fc8b6 100644
--- a/drivers/char/joystick/adi.c
+++ b/drivers/char/joystick/adi.c
@@ -34,7 +34,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/input.h>
#include <linux/gameport.h>
#include <linux/init.h>
diff --git a/drivers/char/joystick/analog.c b/drivers/char/joystick/analog.c
index dbd46fb7e774..a9f5a0b0dc6c 100644
--- a/drivers/char/joystick/analog.c
+++ b/drivers/char/joystick/analog.c
@@ -34,7 +34,7 @@
#include <linux/delay.h>
#include <linux/kernel.h>
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/bitops.h>
#include <linux/init.h>
#include <linux/input.h>
diff --git a/drivers/char/joystick/cobra.c b/drivers/char/joystick/cobra.c
index f059a2ff6c42..d71ac96ac368 100644
--- a/drivers/char/joystick/cobra.c
+++ b/drivers/char/joystick/cobra.c
@@ -32,7 +32,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/gameport.h>
#include <linux/input.h>
diff --git a/drivers/char/joystick/gameport.c b/drivers/char/joystick/gameport.c
index 15ef908a6727..d3cb6422e659 100644
--- a/drivers/char/joystick/gameport.c
+++ b/drivers/char/joystick/gameport.c
@@ -35,7 +35,7 @@
#include <linux/ioport.h>
#include <linux/init.h>
#include <linux/gameport.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/isapnp.h>
#include <linux/stddef.h>
#include <linux/delay.h>
diff --git a/drivers/char/joystick/gf2k.c b/drivers/char/joystick/gf2k.c
index cad8be16bd11..5ec0e7f6db64 100644
--- a/drivers/char/joystick/gf2k.c
+++ b/drivers/char/joystick/gf2k.c
@@ -32,7 +32,7 @@
#include <linux/delay.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/input.h>
diff --git a/drivers/char/joystick/grip.c b/drivers/char/joystick/grip.c
index 4cedd7892ac0..3d9742b33da4 100644
--- a/drivers/char/joystick/grip.c
+++ b/drivers/char/joystick/grip.c
@@ -33,7 +33,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/gameport.h>
#include <linux/input.h>
diff --git a/drivers/char/joystick/iforce.c b/drivers/char/joystick/iforce.c
index af8adaed17dc..124edb321d11 100644
--- a/drivers/char/joystick/iforce.c
+++ b/drivers/char/joystick/iforce.c
@@ -29,7 +29,7 @@
*/
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/input.h>
#include <linux/module.h>
#include <linux/init.h>
diff --git a/drivers/char/joystick/interact.c b/drivers/char/joystick/interact.c
index 7104e5d49e8d..267122804445 100644
--- a/drivers/char/joystick/interact.c
+++ b/drivers/char/joystick/interact.c
@@ -34,7 +34,7 @@
*/
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/module.h>
#include <linux/delay.h>
#include <linux/init.h>
diff --git a/drivers/char/joystick/lightning.c b/drivers/char/joystick/lightning.c
index 69dfd11121cb..c05c90021626 100644
--- a/drivers/char/joystick/lightning.c
+++ b/drivers/char/joystick/lightning.c
@@ -38,7 +38,7 @@
#include <linux/module.h>
#include <linux/init.h>
#include <linux/gameport.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#define L4_PORT 0x201
#define L4_SELECT_ANALOG 0xa4
diff --git a/drivers/char/joystick/magellan.c b/drivers/char/joystick/magellan.c
index e8c77f48e14b..2867a3a1855a 100644
--- a/drivers/char/joystick/magellan.c
+++ b/drivers/char/joystick/magellan.c
@@ -32,7 +32,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/input.h>
#include <linux/serio.h>
#include <linux/init.h>
diff --git a/drivers/char/joystick/ns558.c b/drivers/char/joystick/ns558.c
index 36c5d9f9e22a..a4b26a0830fd 100644
--- a/drivers/char/joystick/ns558.c
+++ b/drivers/char/joystick/ns558.c
@@ -38,7 +38,7 @@
#include <linux/config.h>
#include <linux/init.h>
#include <linux/gameport.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/isapnp.h>
MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>");
diff --git a/drivers/char/joystick/serport.c b/drivers/char/joystick/serport.c
index 453e674d7032..14c6537aa43a 100644
--- a/drivers/char/joystick/serport.c
+++ b/drivers/char/joystick/serport.c
@@ -33,7 +33,7 @@
#include <asm/uaccess.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/serio.h>
diff --git a/drivers/char/joystick/sidewinder.c b/drivers/char/joystick/sidewinder.c
index ae31265cbbe1..1ba4123053e8 100644
--- a/drivers/char/joystick/sidewinder.c
+++ b/drivers/char/joystick/sidewinder.c
@@ -33,7 +33,7 @@
#include <linux/delay.h>
#include <linux/kernel.h>
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/input.h>
#include <linux/gameport.h>
diff --git a/drivers/char/joystick/spaceball.c b/drivers/char/joystick/spaceball.c
index 8e2936f73e34..e6aa5f094d1d 100644
--- a/drivers/char/joystick/spaceball.c
+++ b/drivers/char/joystick/spaceball.c
@@ -35,7 +35,7 @@
*/
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/input.h>
diff --git a/drivers/char/joystick/spaceorb.c b/drivers/char/joystick/spaceorb.c
index 866e1ba50a52..4c595fdce973 100644
--- a/drivers/char/joystick/spaceorb.c
+++ b/drivers/char/joystick/spaceorb.c
@@ -34,7 +34,7 @@
*/
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/input.h>
diff --git a/drivers/char/joystick/tmdc.c b/drivers/char/joystick/tmdc.c
index f356f7dd5c2c..611ae962a92c 100644
--- a/drivers/char/joystick/tmdc.c
+++ b/drivers/char/joystick/tmdc.c
@@ -36,7 +36,7 @@
#include <linux/delay.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/gameport.h>
diff --git a/drivers/char/joystick/warrior.c b/drivers/char/joystick/warrior.c
index 7000b8560b92..d84f2950e9f3 100644
--- a/drivers/char/joystick/warrior.c
+++ b/drivers/char/joystick/warrior.c
@@ -32,7 +32,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/input.h>
#include <linux/serio.h>
#include <linux/init.h>
diff --git a/drivers/char/lp.c b/drivers/char/lp.c
index 5a590422f84a..1c8f7663027e 100644
--- a/drivers/char/lp.c
+++ b/drivers/char/lp.c
@@ -121,7 +121,7 @@
#include <linux/sched.h>
#include <linux/smp_lock.h>
#include <linux/devfs_fs_kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
#include <linux/delay.h>
#include <linux/poll.h>
diff --git a/drivers/char/mem.c b/drivers/char/mem.c
index 71d833b36528..7aaa88f23c1f 100644
--- a/drivers/char/mem.c
+++ b/drivers/char/mem.c
@@ -13,12 +13,13 @@
#include <linux/miscdevice.h>
#include <linux/tpqic02.h>
#include <linux/ftape.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/mman.h>
#include <linux/random.h>
#include <linux/init.h>
#include <linux/raw.h>
+#include <linux/tty.h>
#include <linux/capability.h>
#include <asm/uaccess.h>
diff --git a/drivers/char/misc.c b/drivers/char/misc.c
index 465fed249e36..1da352fc4d6f 100644
--- a/drivers/char/misc.c
+++ b/drivers/char/misc.c
@@ -41,7 +41,7 @@
#include <linux/miscdevice.h>
#include <linux/kernel.h>
#include <linux/major.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/proc_fs.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/stat.h>
diff --git a/drivers/char/n_hdlc.c b/drivers/char/n_hdlc.c
index 3427c1421e31..130d53301f53 100644
--- a/drivers/char/n_hdlc.c
+++ b/drivers/char/n_hdlc.c
@@ -96,7 +96,7 @@
#include <linux/poll.h>
#include <linux/in.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/tty.h>
#include <linux/errno.h>
#include <linux/string.h> /* used in new tty drivers */
diff --git a/drivers/char/n_r3964.c b/drivers/char/n_r3964.c
index 8a825753a333..215988d59622 100644
--- a/drivers/char/n_r3964.c
+++ b/drivers/char/n_r3964.c
@@ -51,7 +51,7 @@
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/in.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/tty.h>
#include <linux/errno.h>
#include <linux/string.h> /* used in new tty drivers */
diff --git a/drivers/char/n_tty.c b/drivers/char/n_tty.c
index c2ae319af99d..66124475aa80 100644
--- a/drivers/char/n_tty.c
+++ b/drivers/char/n_tty.c
@@ -38,7 +38,7 @@
#include <linux/kd.h>
#include <linux/mm.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/poll.h>
#include <asm/uaccess.h>
diff --git a/drivers/char/nvram.c b/drivers/char/nvram.c
index bd7efe8461fb..1086559df069 100644
--- a/drivers/char/nvram.c
+++ b/drivers/char/nvram.c
@@ -94,7 +94,7 @@
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/miscdevice.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/fcntl.h>
#include <linux/mc146818rtc.h>
@@ -481,7 +481,8 @@ static void pc_set_checksum( void )
#ifdef CONFIG_PROC_FS
static char *floppy_types[] = {
- "none", "5.25'' 360k", "5.25'' 1.2M", "3.5'' 720k", "3.5'' 1.44M", "3.5'' 2.88M"
+ "none", "5.25'' 360k", "5.25'' 1.2M", "3.5'' 720k", "3.5'' 1.44M",
+ "3.5'' 2.88M", "3.5'' 2.88M"
};
static char *gfx_types[] = {
diff --git a/drivers/char/pc_keyb.c b/drivers/char/pc_keyb.c
index 4a77583256a8..35e4e132831d 100644
--- a/drivers/char/pc_keyb.c
+++ b/drivers/char/pc_keyb.c
@@ -29,7 +29,7 @@
#include <linux/random.h>
#include <linux/poll.h>
#include <linux/miscdevice.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/kbd_kern.h>
#include <linux/smp_lock.h>
diff --git a/drivers/char/pcmcia/serial_cb.c b/drivers/char/pcmcia/serial_cb.c
index f959b9c40153..2efbc2459166 100644
--- a/drivers/char/pcmcia/serial_cb.c
+++ b/drivers/char/pcmcia/serial_cb.c
@@ -24,7 +24,7 @@
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/tty.h>
#include <linux/serial.h>
diff --git a/drivers/char/pcmcia/serial_cs.c b/drivers/char/pcmcia/serial_cs.c
index af25aa9e9caa..68597aa9a161 100644
--- a/drivers/char/pcmcia/serial_cs.c
+++ b/drivers/char/pcmcia/serial_cs.c
@@ -36,7 +36,7 @@
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/timer.h>
#include <linux/tty.h>
diff --git a/drivers/char/pcwd.c b/drivers/char/pcwd.c
index 2b4a71546c9f..9a593a7baedc 100644
--- a/drivers/char/pcwd.c
+++ b/drivers/char/pcwd.c
@@ -53,7 +53,7 @@
#include <linux/kernel.h>
#include <linux/wait.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/delay.h>
#include <linux/miscdevice.h>
diff --git a/drivers/char/pcxx.c b/drivers/char/pcxx.c
index 19c5f8416e0e..794f6bebd485 100644
--- a/drivers/char/pcxx.c
+++ b/drivers/char/pcxx.c
@@ -63,7 +63,7 @@
#include <linux/delay.h>
#include <linux/serial.h>
#include <linux/tty_driver.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/version.h>
diff --git a/drivers/char/q40_keyb.c b/drivers/char/q40_keyb.c
index 22c981b79aa1..02fc307664a0 100644
--- a/drivers/char/q40_keyb.c
+++ b/drivers/char/q40_keyb.c
@@ -21,7 +21,7 @@
#include <linux/random.h>
#include <linux/poll.h>
#include <linux/miscdevice.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/keyboard.h>
#include <asm/bitops.h>
diff --git a/drivers/char/qpmouse.c b/drivers/char/qpmouse.c
index 922f56a0c4d0..d3e606874e49 100644
--- a/drivers/char/qpmouse.c
+++ b/drivers/char/qpmouse.c
@@ -31,7 +31,7 @@
#include <linux/fcntl.h>
#include <linux/errno.h>
#include <linux/timer.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/miscdevice.h>
#include <linux/random.h>
#include <linux/poll.h>
diff --git a/drivers/char/random.c b/drivers/char/random.c
index bbd5aff21e3a..df2d53f2b02a 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -240,7 +240,7 @@
#include <linux/major.h>
#include <linux/string.h>
#include <linux/fcntl.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <linux/poll.h>
#include <linux/init.h>
diff --git a/drivers/char/rio/rio_linux.c b/drivers/char/rio/rio_linux.c
index 6b0e3d298adc..5b1ae925c826 100644
--- a/drivers/char/rio/rio_linux.c
+++ b/drivers/char/rio/rio_linux.c
@@ -56,7 +56,7 @@
#include <linux/tqueue.h>
#include <linux/version.h>
#include <linux/pci.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/miscdevice.h>
#include <linux/compatmac.h>
diff --git a/drivers/char/rio/rioboot.c b/drivers/char/rio/rioboot.c
index d5ab5ba02f6c..c1e2ca81899f 100644
--- a/drivers/char/rio/rioboot.c
+++ b/drivers/char/rio/rioboot.c
@@ -36,7 +36,7 @@ static char *_rioboot_c_sccs_ = "@(#)rioboot.c 1.3";
#define __NO_VERSION__
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
#include <asm/io.h>
#include <asm/system.h>
diff --git a/drivers/char/rio/riocmd.c b/drivers/char/rio/riocmd.c
index 3a330a07c51e..f651ed9e8ac5 100644
--- a/drivers/char/rio/riocmd.c
+++ b/drivers/char/rio/riocmd.c
@@ -36,8 +36,9 @@ static char *_riocmd_c_sccs_ = "@(#)riocmd.c 1.2";
#define __NO_VERSION__
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
+#include <linux/tty.h>
#include <asm/io.h>
#include <asm/system.h>
#include <asm/string.h>
diff --git a/drivers/char/rio/rioctrl.c b/drivers/char/rio/rioctrl.c
index af61dc9972dd..4a088353a8ba 100644
--- a/drivers/char/rio/rioctrl.c
+++ b/drivers/char/rio/rioctrl.c
@@ -36,7 +36,7 @@ static char *_rioctrl_c_sccs_ = "@(#)rioctrl.c 1.3";
#define __NO_VERSION__
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
#include <asm/io.h>
#include <asm/system.h>
diff --git a/drivers/char/rio/rioinit.c b/drivers/char/rio/rioinit.c
index cbefdac2d989..6ab8175c7d66 100644
--- a/drivers/char/rio/rioinit.c
+++ b/drivers/char/rio/rioinit.c
@@ -36,7 +36,7 @@ static char *_rioinit_c_sccs_ = "@(#)rioinit.c 1.3";
#define __NO_VERSION__
#include <linux/config.h>
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
#include <asm/io.h>
#include <asm/system.h>
diff --git a/drivers/char/rio/riointr.c b/drivers/char/rio/riointr.c
index f52124b78cac..c97f88640f40 100644
--- a/drivers/char/rio/riointr.c
+++ b/drivers/char/rio/riointr.c
@@ -36,8 +36,9 @@ static char *_riointr_c_sccs_ = "@(#)riointr.c 1.2";
#define __NO_VERSION__
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
+#include <linux/tty.h>
#include <asm/io.h>
#include <asm/system.h>
#include <asm/string.h>
diff --git a/drivers/char/rio/rioparam.c b/drivers/char/rio/rioparam.c
index 4ce8443c3417..069172fec3e8 100644
--- a/drivers/char/rio/rioparam.c
+++ b/drivers/char/rio/rioparam.c
@@ -36,8 +36,9 @@ static char *_rioparam_c_sccs_ = "@(#)rioparam.c 1.3";
#define __NO_VERSION__
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
+#include <linux/tty.h>
#include <asm/io.h>
#include <asm/system.h>
#include <asm/string.h>
diff --git a/drivers/char/rio/rioroute.c b/drivers/char/rio/rioroute.c
index ab78ddf5d1a1..b621005dc2a9 100644
--- a/drivers/char/rio/rioroute.c
+++ b/drivers/char/rio/rioroute.c
@@ -35,7 +35,7 @@ static char *_rioroute_c_sccs_ = "@(#)rioroute.c 1.3";
#define __NO_VERSION__
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
#include <asm/io.h>
#include <asm/system.h>
diff --git a/drivers/char/rio/riotable.c b/drivers/char/rio/riotable.c
index 2b82c25ad457..c4a048b7b798 100644
--- a/drivers/char/rio/riotable.c
+++ b/drivers/char/rio/riotable.c
@@ -35,7 +35,7 @@ static char *_riotable_c_sccs_ = "@(#)riotable.c 1.2";
#define __NO_VERSION__
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
#include <asm/io.h>
#include <asm/system.h>
diff --git a/drivers/char/rio/riotty.c b/drivers/char/rio/riotty.c
index c9134e3fc84b..aaa7a1f32796 100644
--- a/drivers/char/rio/riotty.c
+++ b/drivers/char/rio/riotty.c
@@ -38,8 +38,9 @@ static char *_riotty_c_sccs_ = "@(#)riotty.c 1.3";
#define __NO_VERSION__
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
+#include <linux/tty.h>
#include <asm/io.h>
#include <asm/system.h>
#include <asm/string.h>
diff --git a/drivers/char/rocket.c b/drivers/char/rocket.c
index 5cecdde405a6..7db2405edd58 100644
--- a/drivers/char/rocket.c
+++ b/drivers/char/rocket.c
@@ -66,7 +66,7 @@
#include <linux/major.h>
#include <linux/kernel.h>
#include <linux/signal.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/sched.h>
diff --git a/drivers/char/sbc60xxwdt.c b/drivers/char/sbc60xxwdt.c
index 0c3deed84165..e3f35a142370 100644
--- a/drivers/char/sbc60xxwdt.c
+++ b/drivers/char/sbc60xxwdt.c
@@ -63,7 +63,7 @@
#include <linux/sched.h>
#include <linux/miscdevice.h>
#include <linux/watchdog.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/fcntl.h>
#include <linux/smp_lock.h>
diff --git a/drivers/char/scan_keyb.c b/drivers/char/scan_keyb.c
index 6ba861be2615..20ac1e7e0bc2 100644
--- a/drivers/char/scan_keyb.c
+++ b/drivers/char/scan_keyb.c
@@ -16,7 +16,7 @@
#include <linux/random.h>
#include <linux/poll.h>
#include <linux/miscdevice.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/kbd_kern.h>
struct scan_keyboard {
diff --git a/drivers/char/selection.c b/drivers/char/selection.c
index b804a61e1f09..39cf73765faf 100644
--- a/drivers/char/selection.c
+++ b/drivers/char/selection.c
@@ -15,7 +15,7 @@
#include <linux/tty.h>
#include <linux/sched.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/types.h>
#include <asm/uaccess.h>
diff --git a/drivers/char/serial_21285.c b/drivers/char/serial_21285.c
index 16ad022bd7a4..f8541f3cfa1d 100644
--- a/drivers/char/serial_21285.c
+++ b/drivers/char/serial_21285.c
@@ -19,7 +19,7 @@
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/console.h>
diff --git a/drivers/char/serial_amba.c b/drivers/char/serial_amba.c
index eaab7d34e626..cbd353846293 100644
--- a/drivers/char/serial_amba.c
+++ b/drivers/char/serial_amba.c
@@ -48,7 +48,7 @@
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/circ_buf.h>
#include <linux/serial.h>
diff --git a/drivers/char/sh-sci.c b/drivers/char/sh-sci.c
index c14fa8487a2d..e329bfbb13bd 100644
--- a/drivers/char/sh-sci.c
+++ b/drivers/char/sh-sci.c
@@ -29,7 +29,7 @@
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/delay.h>
#ifdef CONFIG_SERIAL_CONSOLE
diff --git a/drivers/char/stallion.c b/drivers/char/stallion.c
index dbd51e51a11b..6628f9d05319 100644
--- a/drivers/char/stallion.c
+++ b/drivers/char/stallion.c
@@ -29,8 +29,9 @@
#include <linux/config.h>
#include <linux/module.h>
#include <linux/version.h> /* for linux/stallion.h */
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/interrupt.h>
+#include <linux/tty.h>
#include <linux/tty_flip.h>
#include <linux/serial.h>
#include <linux/cd1400.h>
diff --git a/drivers/char/synclink.c b/drivers/char/synclink.c
index 156c683e4d5e..da09b33a6c8d 100644
--- a/drivers/char/synclink.c
+++ b/drivers/char/synclink.c
@@ -78,7 +78,7 @@
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/netdevice.h>
diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c
index 71773fa6c8db..ad9b94da2a76 100644
--- a/drivers/char/sysrq.c
+++ b/drivers/char/sysrq.c
@@ -13,6 +13,7 @@
#include <linux/interrupt.h>
#include <linux/mm.h>
#include <linux/fs.h>
+#include <linux/tty.h>
#include <linux/mount.h>
#include <linux/kdev_t.h>
#include <linux/major.h>
diff --git a/drivers/char/tpqic02.c b/drivers/char/tpqic02.c
index 536942f41398..0f9be7ac5aa6 100644
--- a/drivers/char/tpqic02.c
+++ b/drivers/char/tpqic02.c
@@ -87,7 +87,7 @@
#include <linux/ioport.h>
#include <linux/tpqic02.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/smp_lock.h>
#include <linux/devfs_fs_kernel.h>
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
index dff7458ae4b9..57628904e1d7 100644
--- a/drivers/char/tty_io.c
+++ b/drivers/char/tty_io.c
@@ -81,7 +81,7 @@
#include <linux/kd.h>
#include <linux/mm.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/poll.h>
#include <linux/proc_fs.h>
#include <linux/init.h>
diff --git a/drivers/char/vme_scc.c b/drivers/char/vme_scc.c
index d6bc4e63b521..67ed42822c79 100644
--- a/drivers/char/vme_scc.c
+++ b/drivers/char/vme_scc.c
@@ -31,7 +31,7 @@
#include <linux/delay.h>
#include <linux/tqueue.h>
#include <linux/version.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/miscdevice.h>
#include <linux/console.h>
#include <linux/init.h>
diff --git a/drivers/char/vt.c b/drivers/char/vt.c
index 0a085944c31f..31c4fc470999 100644
--- a/drivers/char/vt.c
+++ b/drivers/char/vt.c
@@ -19,7 +19,7 @@
#include <linux/kd.h>
#include <linux/vt.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/major.h>
#include <linux/fs.h>
#include <linux/console.h>
diff --git a/drivers/char/wdt.c b/drivers/char/wdt.c
index 9600a5b17ce8..0da4f4241831 100644
--- a/drivers/char/wdt.c
+++ b/drivers/char/wdt.c
@@ -40,7 +40,7 @@
#include <linux/miscdevice.h>
#include <linux/watchdog.h>
#include "wd501p.h"
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/fcntl.h>
#include <asm/io.h>
diff --git a/drivers/char/wdt_pci.c b/drivers/char/wdt_pci.c
index 5ff7210aeeaa..f5572a1c7a36 100644
--- a/drivers/char/wdt_pci.c
+++ b/drivers/char/wdt_pci.c
@@ -43,7 +43,7 @@
#include <linux/watchdog.h>
#define WDT_IS_PCI
#include "wd501p.h"
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/fcntl.h>
#include <asm/io.h>
diff --git a/drivers/dio/dio.c b/drivers/dio/dio.c
index ad4cc754460f..bf8468cfa4a1 100644
--- a/drivers/dio/dio.c
+++ b/drivers/dio/dio.c
@@ -28,7 +28,7 @@
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/dio.h>
-#include <linux/malloc.h> /* kmalloc() */
+#include <linux/slab.h> /* kmalloc() */
#include <linux/init.h>
#include <asm/hwtest.h> /* hwreg_present() */
#include <asm/io.h> /* readb() */
diff --git a/drivers/fc4/fc.c b/drivers/fc4/fc.c
index 4123a73649ab..7c1ee6927e6b 100644
--- a/drivers/fc4/fc.c
+++ b/drivers/fc4/fc.c
@@ -30,7 +30,7 @@
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/in.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/init.h>
#include <linux/blk.h>
diff --git a/drivers/fc4/soc.c b/drivers/fc4/soc.c
index 329c2ae45f22..e78f781fc481 100644
--- a/drivers/fc4/soc.c
+++ b/drivers/fc4/soc.c
@@ -29,7 +29,7 @@ static char *version =
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/in.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/init.h>
#include <asm/bitops.h>
diff --git a/drivers/fc4/socal.c b/drivers/fc4/socal.c
index 51f7b095d2d3..0dc30e22e096 100644
--- a/drivers/fc4/socal.c
+++ b/drivers/fc4/socal.c
@@ -24,7 +24,7 @@ static char *version =
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/in.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/init.h>
#include <asm/system.h>
diff --git a/drivers/i2c/i2c-algo-bit.c b/drivers/i2c/i2c-algo-bit.c
index c4ecf7daece9..48d6c6492c8a 100644
--- a/drivers/i2c/i2c-algo-bit.c
+++ b/drivers/i2c/i2c-algo-bit.c
@@ -26,7 +26,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/delay.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/version.h>
#include <linux/init.h>
#include <asm/uaccess.h>
diff --git a/drivers/i2c/i2c-algo-pcf.c b/drivers/i2c/i2c-algo-pcf.c
index cadd051b7350..5618b7557f17 100644
--- a/drivers/i2c/i2c-algo-pcf.c
+++ b/drivers/i2c/i2c-algo-pcf.c
@@ -29,7 +29,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/delay.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/version.h>
#include <linux/init.h>
#include <asm/uaccess.h>
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 84e6003640a4..b9db448d274b 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -25,7 +25,7 @@
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/proc_fs.h>
#include <linux/config.h>
@@ -1277,31 +1277,14 @@ static int __init i2c_init(void)
}
#ifndef MODULE
-#ifdef CONFIG_I2C_CHARDEV
extern int i2c_dev_init(void);
-#endif
-#ifdef CONFIG_I2C_ALGOBIT
extern int i2c_algo_bit_init(void);
-#endif
-#ifdef CONFIG_I2C_BITLP
extern int i2c_bitlp_init(void);
-#endif
-#ifdef CONFIG_I2C_BITELV
extern int i2c_bitelv_init(void);
-#endif
-#ifdef CONFIG_I2C_BITVELLE
extern int i2c_bitvelle_init(void);
-#endif
-#ifdef CONFIG_I2C_BITVIA
extern int i2c_bitvia_init(void);
-#endif
-
-#ifdef CONFIG_I2C_ALGOPCF
extern int i2c_algo_pcf_init(void);
-#endif
-#ifdef CONFIG_I2C_PCFISA
extern int i2c_pcfisa_init(void);
-#endif
/* This is needed for automatic patch generation: sensors code starts here */
/* This is needed for automatic patch generation: sensors code ends here */
diff --git a/drivers/i2c/i2c-dev.c b/drivers/i2c/i2c-dev.c
index cf6afc575ce2..b647b16ad14c 100644
--- a/drivers/i2c/i2c-dev.c
+++ b/drivers/i2c/i2c-dev.c
@@ -34,7 +34,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/version.h>
#if LINUX_KERNEL_VERSION >= KERNEL_VERSION(2,4,0)
#include <linux/smp_lock.h>
diff --git a/drivers/i2c/i2c-elektor.c b/drivers/i2c/i2c-elektor.c
index 9e82fbdf4026..590f42ff2c62 100644
--- a/drivers/i2c/i2c-elektor.c
+++ b/drivers/i2c/i2c-elektor.c
@@ -28,7 +28,7 @@
#include <linux/ioport.h>
#include <linux/module.h>
#include <linux/delay.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/version.h>
#include <linux/init.h>
#include <asm/irq.h>
diff --git a/drivers/i2c/i2c-elv.c b/drivers/i2c/i2c-elv.c
index adae40c4ce95..0fcd9a65b35f 100644
--- a/drivers/i2c/i2c-elv.c
+++ b/drivers/i2c/i2c-elv.c
@@ -26,7 +26,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/delay.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/version.h>
#include <linux/init.h>
diff --git a/drivers/i2c/i2c-pcf8584.h b/drivers/i2c/i2c-pcf8584.h
index 9f0874012f91..4908ebae5526 100644
--- a/drivers/i2c/i2c-pcf8584.h
+++ b/drivers/i2c/i2c-pcf8584.h
@@ -75,4 +75,4 @@
#define I2C_PCF_INTREG I2C_PCF_ES2
#define I2C_PCF_CLKREG I2C_PCF_ES1
-#endif I2C_PCF8584_H
+#endif /* I2C_PCF8584_H */
diff --git a/drivers/i2o/i2o_block.c b/drivers/i2o/i2o_block.c
index 857b32a7efd9..641b8451190b 100644
--- a/drivers/i2o/i2o_block.c
+++ b/drivers/i2o/i2o_block.c
@@ -51,7 +51,7 @@
#include <linux/i2o.h>
#include <linux/blkdev.h>
#include <linux/blkpg.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/hdreg.h>
#include <linux/notifier.h>
diff --git a/drivers/i2o/i2o_config.c b/drivers/i2o/i2o_config.c
index 9a9cfec6e142..aed4b986deba 100644
--- a/drivers/i2o/i2o_config.c
+++ b/drivers/i2o/i2o_config.c
@@ -31,7 +31,7 @@
#include <linux/i2o.h>
#include <linux/errno.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/miscdevice.h>
#include <linux/mm.h>
#include <linux/spinlock.h>
diff --git a/drivers/i2o/i2o_core.c b/drivers/i2o/i2o_core.c
index e9942c614a50..b947ee337097 100644
--- a/drivers/i2o/i2o_core.c
+++ b/drivers/i2o/i2o_core.c
@@ -31,7 +31,7 @@
#include <linux/errno.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/spinlock.h>
#include <linux/smp_lock.h>
diff --git a/drivers/i2o/i2o_lan.c b/drivers/i2o/i2o_lan.c
index 8b9e4c448136..c49173c92ab0 100644
--- a/drivers/i2o/i2o_lan.c
+++ b/drivers/i2o/i2o_lan.c
@@ -36,7 +36,7 @@
#include <linux/skbuff.h>
#include <linux/if_arp.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/spinlock.h>
#include <linux/tqueue.h>
diff --git a/drivers/i2o/i2o_pci.c b/drivers/i2o/i2o_pci.c
index 6b646a1d8864..fea8a60c2ceb 100644
--- a/drivers/i2o/i2o_pci.c
+++ b/drivers/i2o/i2o_pci.c
@@ -24,7 +24,7 @@
#include <linux/i2o.h>
#include <linux/errno.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/io.h>
#ifdef CONFIG_MTRR
diff --git a/drivers/ide/hd.c b/drivers/ide/hd.c
index bed5f6210b54..e49dd0b9c1f5 100644
--- a/drivers/ide/hd.c
+++ b/drivers/ide/hd.c
@@ -36,7 +36,7 @@
#include <linux/kernel.h>
#include <linux/hdreg.h>
#include <linux/genhd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/ioport.h>
#include <linux/mc146818rtc.h> /* CMOS defines */
diff --git a/drivers/ide/icside.c b/drivers/ide/icside.c
index c727cb889bc2..ef46e91ed286 100644
--- a/drivers/ide/icside.c
+++ b/drivers/ide/icside.c
@@ -14,7 +14,7 @@
#include <linux/string.h>
#include <linux/module.h>
#include <linux/ioport.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blkdev.h>
#include <linux/errno.h>
#include <linux/hdreg.h>
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index 8528dc8d3904..16b0ade47f3c 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -302,7 +302,7 @@
#include <linux/kernel.h>
#include <linux/delay.h>
#include <linux/timer.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/errno.h>
#include <linux/cdrom.h>
diff --git a/drivers/ide/ide-cs.c b/drivers/ide/ide-cs.c
index bf4350f73264..4a199ca71912 100644
--- a/drivers/ide/ide-cs.c
+++ b/drivers/ide/ide-cs.c
@@ -19,7 +19,7 @@
are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
Alternatively, the contents of this file may be used under the
- terms of the GNU Public License version 2 (the "GPL"), in which
+ terms of the GNU General Public License version 2 (the "GPL"), in which
case the provisions of the GPL are applicable instead of the
above. If you wish to allow the use of your version of this file
only under the terms of the GPL and not to allow others to use
@@ -36,7 +36,7 @@
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/timer.h>
#include <linux/ioport.h>
@@ -95,7 +95,7 @@ static void ide_release(u_long arg);
static int ide_event(event_t event, int priority,
event_callback_args_t *args);
-static dev_info_t dev_info = "ide_cs";
+static dev_info_t dev_info = "ide-cs";
static dev_link_t *ide_attach(void);
static void ide_detach(dev_link_t *);
@@ -387,6 +387,11 @@ void ide_release(u_long arg)
ide_unregister(info->hd);
MOD_DEC_USE_COUNT;
}
+
+ request_region(link->io.BasePort1, link->io.NumPorts1,"ide-cs");
+ if (link->io.NumPorts2)
+ request_region(link->io.BasePort2, link->io.NumPorts2,"ide-cs");
+
info->ndev = 0;
link->dev = NULL;
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c
index 08cee052a5c3..d246487e9256 100644
--- a/drivers/ide/ide-disk.c
+++ b/drivers/ide/ide-disk.c
@@ -44,7 +44,7 @@
#include <linux/major.h>
#include <linux/errno.h>
#include <linux/genhd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/ide.h>
diff --git a/drivers/ide/ide-features.c b/drivers/ide/ide-features.c
index 2dfef8bee0d5..80a28c9631a6 100644
--- a/drivers/ide/ide-features.c
+++ b/drivers/ide/ide-features.c
@@ -27,7 +27,7 @@
#include <linux/errno.h>
#include <linux/genhd.h>
#include <linux/blkpg.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pci.h>
#include <linux/delay.h>
#include <linux/hdreg.h>
@@ -189,6 +189,10 @@ int ide_driveid_update (ide_drive_t *drive)
__cli(); /* local CPU only; some systems need this */
SELECT_MASK(HWIF(drive), drive, 0);
id = kmalloc(SECTOR_WORDS*4, GFP_ATOMIC);
+ if (!id) {
+ __restore_flags(flags); /* local CPU only */
+ return 0;
+ }
ide_input_data(drive, id, SECTOR_WORDS);
(void) GET_STAT(); /* clear drive IRQ */
ide__sti(); /* local CPU only */
diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c
index b6258aad80f5..52343a5f3e82 100644
--- a/drivers/ide/ide-floppy.c
+++ b/drivers/ide/ide-floppy.c
@@ -45,7 +45,7 @@
#include <linux/major.h>
#include <linux/errno.h>
#include <linux/genhd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/cdrom.h>
#include <linux/ide.h>
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
index 4ade9d555b9d..8b3a37914e49 100644
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -40,7 +40,7 @@
#include <linux/major.h>
#include <linux/errno.h>
#include <linux/genhd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/ide.h>
#include <linux/spinlock.h>
diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c
index 0e7a23994c7b..774594bbc746 100644
--- a/drivers/ide/ide-tape.c
+++ b/drivers/ide/ide-tape.c
@@ -399,7 +399,7 @@
#include <linux/devfs_fs_kernel.h>
#include <linux/errno.h>
#include <linux/genhd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pci.h>
#include <linux/ide.h>
#include <linux/smp_lock.h>
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c
index 95640895a22b..5dd08aea728d 100644
--- a/drivers/ide/ide.c
+++ b/drivers/ide/ide.c
@@ -140,7 +140,7 @@
#include <linux/errno.h>
#include <linux/genhd.h>
#include <linux/blkpg.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#ifndef MODULE
#include <linux/init.h>
#endif /* MODULE */
diff --git a/drivers/ide/rapide.c b/drivers/ide/rapide.c
index a842a3287466..4976e49dc2ac 100644
--- a/drivers/ide/rapide.c
+++ b/drivers/ide/rapide.c
@@ -9,7 +9,7 @@
*/
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blkdev.h>
#include <linux/errno.h>
#include <linux/ide.h>
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
index 8e676b8da378..d1df86bc9d08 100644
--- a/drivers/input/evdev.c
+++ b/drivers/input/evdev.c
@@ -33,7 +33,7 @@
#define EVDEV_BUFFER_SIZE 64
#include <linux/poll.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/input.h>
diff --git a/drivers/input/joydev.c b/drivers/input/joydev.c
index 4e12f55b7234..d3323f733c6f 100644
--- a/drivers/input/joydev.c
+++ b/drivers/input/joydev.c
@@ -38,7 +38,7 @@
#include <linux/input.h>
#include <linux/kernel.h>
#include <linux/major.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/miscdevice.h>
#include <linux/module.h>
diff --git a/drivers/input/keybdev.c b/drivers/input/keybdev.c
index 95fce5e80f5f..2ab0e58dd100 100644
--- a/drivers/input/keybdev.c
+++ b/drivers/input/keybdev.c
@@ -31,8 +31,9 @@
#include <linux/config.h>
#include <linux/kbd_ll.h>
#include <linux/input.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
+#include <linux/tty.h>
#include <linux/module.h>
#include <linux/kbd_kern.h>
diff --git a/drivers/input/mousedev.c b/drivers/input/mousedev.c
index e6a9e02a131a..44344f8df70e 100644
--- a/drivers/input/mousedev.c
+++ b/drivers/input/mousedev.c
@@ -32,7 +32,7 @@
#define MOUSEDEV_MINORS 32
#define MOUSEDEV_MIX 31
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/poll.h>
#include <linux/module.h>
#include <linux/init.h>
diff --git a/drivers/isdn/act2000/act2000.h b/drivers/isdn/act2000/act2000.h
index 432f433cb396..db19bf24564b 100644
--- a/drivers/isdn/act2000/act2000.h
+++ b/drivers/isdn/act2000/act2000.h
@@ -88,7 +88,7 @@ typedef struct act2000_fwid {
#include <asm/io.h>
#include <linux/kernel.h>
#include <linux/signal.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/mman.h>
#include <linux/ioport.h>
diff --git a/drivers/isdn/avmb1/avm_cs.c b/drivers/isdn/avmb1/avm_cs.c
index 3b184c54ea5a..7ad7360d9598 100644
--- a/drivers/isdn/avmb1/avm_cs.c
+++ b/drivers/isdn/avmb1/avm_cs.c
@@ -11,7 +11,7 @@
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/timer.h>
#include <linux/tty.h>
diff --git a/drivers/isdn/avmb1/capi.c b/drivers/isdn/avmb1/capi.c
index 10b804658df0..3227d68b2a2e 100644
--- a/drivers/isdn/avmb1/capi.c
+++ b/drivers/isdn/avmb1/capi.c
@@ -223,7 +223,7 @@
#include <linux/kernel.h>
#include <linux/major.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
#include <linux/fs.h>
#include <linux/signal.h>
diff --git a/drivers/isdn/avmb1/capidrv.c b/drivers/isdn/avmb1/capidrv.c
index 24eeb3739fd9..b4bb90130b66 100644
--- a/drivers/isdn/avmb1/capidrv.c
+++ b/drivers/isdn/avmb1/capidrv.c
@@ -198,7 +198,7 @@
#include <linux/kernel.h>
#include <linux/major.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
#include <linux/fs.h>
#include <linux/signal.h>
diff --git a/drivers/isdn/avmb1/capifs.c b/drivers/isdn/avmb1/capifs.c
index 268ddfc4edf4..e40ef0bb1e4a 100644
--- a/drivers/isdn/avmb1/capifs.c
+++ b/drivers/isdn/avmb1/capifs.c
@@ -86,7 +86,7 @@
#include <linux/kernel.h>
#include <linux/locks.h>
#include <linux/major.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ctype.h>
#include <asm/bitops.h>
#include <asm/uaccess.h>
diff --git a/drivers/isdn/eicon/Divas_mod.c b/drivers/isdn/eicon/Divas_mod.c
index 53217f81f0b9..d3b572c2de0f 100644
--- a/drivers/isdn/eicon/Divas_mod.c
+++ b/drivers/isdn/eicon/Divas_mod.c
@@ -34,7 +34,7 @@
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/ioport.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <errno.h>
#include "adapter.h"
diff --git a/drivers/isdn/eicon/eicon.h b/drivers/isdn/eicon/eicon.h
index 42e9b3b954f7..eefd379a5ff8 100644
--- a/drivers/isdn/eicon/eicon.h
+++ b/drivers/isdn/eicon/eicon.h
@@ -139,7 +139,7 @@ typedef struct {
#include <asm/io.h>
#include <linux/kernel.h>
#include <linux/signal.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/mman.h>
#include <linux/ioport.h>
diff --git a/drivers/isdn/eicon/linchr.c b/drivers/isdn/eicon/linchr.c
index 782429523be5..9a3ccdac6ada 100644
--- a/drivers/isdn/eicon/linchr.c
+++ b/drivers/isdn/eicon/linchr.c
@@ -28,7 +28,7 @@
#include <linux/kernel.h>
#include <linux/poll.h>
#include <linux/fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#undef N_DATA
diff --git a/drivers/isdn/eicon/linio.c b/drivers/isdn/eicon/linio.c
index 74c5990696a9..0412eb6ba8ec 100644
--- a/drivers/isdn/eicon/linio.c
+++ b/drivers/isdn/eicon/linio.c
@@ -29,7 +29,7 @@
#include <asm/io.h>
#include <asm/system.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pci.h>
#include <linux/delay.h>
#undef N_DATA
diff --git a/drivers/isdn/hisax/hisax.h b/drivers/isdn/hisax/hisax.h
index aafbe05a3e14..63c115d78126 100644
--- a/drivers/isdn/hisax/hisax.h
+++ b/drivers/isdn/hisax/hisax.h
@@ -16,7 +16,7 @@
#include <linux/delay.h>
#include <linux/kernel.h>
#include <linux/signal.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/mman.h>
#include <linux/ioport.h>
diff --git a/drivers/isdn/hysdn/hysdn_boot.c b/drivers/isdn/hysdn/hysdn_boot.c
index 2af44170e50b..2218cc982b36 100644
--- a/drivers/isdn/hysdn/hysdn_boot.c
+++ b/drivers/isdn/hysdn/hysdn_boot.c
@@ -26,7 +26,7 @@
#include <linux/module.h>
#include <linux/version.h>
#include <linux/vmalloc.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/uaccess.h>
#include "hysdn_defs.h"
diff --git a/drivers/isdn/hysdn/hysdn_init.c b/drivers/isdn/hysdn/hysdn_init.c
index c3443b74b227..06282b96fe59 100644
--- a/drivers/isdn/hysdn/hysdn_init.c
+++ b/drivers/isdn/hysdn/hysdn_init.c
@@ -27,7 +27,7 @@
#include <linux/version.h>
#include <linux/poll.h>
#include <linux/vmalloc.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pci.h>
#include "hysdn_defs.h"
diff --git a/drivers/isdn/icn/icn.h b/drivers/isdn/icn/icn.h
index b49887c2aadf..fca9dc45d996 100644
--- a/drivers/isdn/icn/icn.h
+++ b/drivers/isdn/icn/icn.h
@@ -55,7 +55,7 @@ typedef struct icn_cdef {
#include <asm/io.h>
#include <linux/kernel.h>
#include <linux/signal.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/mman.h>
#include <linux/ioport.h>
diff --git a/drivers/isdn/isdn_bsdcomp.c b/drivers/isdn/isdn_bsdcomp.c
index e5cc0ea30be5..57d99e8833a6 100644
--- a/drivers/isdn/isdn_bsdcomp.c
+++ b/drivers/isdn/isdn_bsdcomp.c
@@ -61,7 +61,7 @@
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/in.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/tty.h>
#include <linux/errno.h>
#include <linux/string.h> /* used in new tty drivers */
diff --git a/drivers/isdn/isdn_v110.c b/drivers/isdn/isdn_v110.c
index 4272b69b2ef9..74bf8562615e 100644
--- a/drivers/isdn/isdn_v110.c
+++ b/drivers/isdn/isdn_v110.c
@@ -22,7 +22,7 @@
#include <linux/string.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/isdn.h>
diff --git a/drivers/isdn/isdnloop/isdnloop.h b/drivers/isdn/isdnloop/isdnloop.h
index e0ddaaf36a37..c2b005404e79 100644
--- a/drivers/isdn/isdnloop/isdnloop.h
+++ b/drivers/isdn/isdnloop/isdnloop.h
@@ -53,7 +53,7 @@ typedef struct isdnloop_sdef {
#include <asm/io.h>
#include <linux/kernel.h>
#include <linux/signal.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/mman.h>
#include <linux/ioport.h>
diff --git a/drivers/isdn/pcbit/callbacks.c b/drivers/isdn/pcbit/callbacks.c
index afa22b7401a6..ed2ba29d9814 100644
--- a/drivers/isdn/pcbit/callbacks.c
+++ b/drivers/isdn/pcbit/callbacks.c
@@ -27,7 +27,7 @@
#include <linux/kernel.h>
#include <linux/types.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/tqueue.h>
#include <linux/skbuff.h>
diff --git a/drivers/isdn/pcbit/capi.c b/drivers/isdn/pcbit/capi.c
index 1a32c0825429..57b23498fe54 100644
--- a/drivers/isdn/pcbit/capi.c
+++ b/drivers/isdn/pcbit/capi.c
@@ -37,7 +37,7 @@
#include <linux/kernel.h>
#include <linux/types.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/tqueue.h>
diff --git a/drivers/isdn/pcbit/drv.c b/drivers/isdn/pcbit/drv.c
index 1e13e0c6870e..841a1dd8e1eb 100644
--- a/drivers/isdn/pcbit/drv.c
+++ b/drivers/isdn/pcbit/drv.c
@@ -28,7 +28,7 @@
#include <linux/kernel.h>
#include <linux/types.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/interrupt.h>
#include <linux/string.h>
diff --git a/drivers/isdn/pcbit/edss1.c b/drivers/isdn/pcbit/edss1.c
index 1b76b3462038..991f430e66d8 100644
--- a/drivers/isdn/pcbit/edss1.c
+++ b/drivers/isdn/pcbit/edss1.c
@@ -26,7 +26,7 @@
#include <linux/kernel.h>
#include <linux/types.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/tqueue.h>
#include <linux/skbuff.h>
diff --git a/drivers/isdn/pcbit/layer2.c b/drivers/isdn/pcbit/layer2.c
index 98daf755849d..e80b12fafc21 100644
--- a/drivers/isdn/pcbit/layer2.c
+++ b/drivers/isdn/pcbit/layer2.c
@@ -40,7 +40,7 @@
#include <linux/string.h>
#include <linux/kernel.h>
#include <linux/types.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/tqueue.h>
#include <linux/mm.h>
diff --git a/drivers/isdn/sc/includes.h b/drivers/isdn/sc/includes.h
index 951f06f258f8..840dfc0976fd 100644
--- a/drivers/isdn/sc/includes.h
+++ b/drivers/isdn/sc/includes.h
@@ -5,7 +5,7 @@
#include <asm/io.h>
#include <linux/delay.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/ioport.h>
#include <linux/timer.h>
diff --git a/drivers/macintosh/adb.c b/drivers/macintosh/adb.c
index d17382f4fcc5..e10984ce377a 100644
--- a/drivers/macintosh/adb.c
+++ b/drivers/macintosh/adb.c
@@ -19,7 +19,7 @@
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/devfs_fs_kernel.h>
diff --git a/drivers/macintosh/adbhid.c b/drivers/macintosh/adbhid.c
index 8ac4f37d4620..bc1c8a7b83a8 100644
--- a/drivers/macintosh/adbhid.c
+++ b/drivers/macintosh/adbhid.c
@@ -33,7 +33,7 @@
#include <linux/config.h>
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/notifier.h>
#include <linux/input.h>
diff --git a/drivers/macintosh/rtc.c b/drivers/macintosh/rtc.c
index 3e1435a6c809..ebfcc1e02295 100644
--- a/drivers/macintosh/rtc.c
+++ b/drivers/macintosh/rtc.c
@@ -17,7 +17,7 @@
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/miscdevice.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
#include <linux/poll.h>
#include <linux/init.h>
diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c
index 5147d153038e..fe92e94014f9 100644
--- a/drivers/macintosh/via-pmu.c
+++ b/drivers/macintosh/via-pmu.c
@@ -26,7 +26,7 @@
#include <linux/miscdevice.h>
#include <linux/blkdev.h>
#include <linux/pci.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/poll.h>
#include <linux/adb.h>
#include <linux/pmu.h>
diff --git a/drivers/macintosh/via-pmu68k.c b/drivers/macintosh/via-pmu68k.c
index 473700fa8ee9..5ac40964db11 100644
--- a/drivers/macintosh/via-pmu68k.c
+++ b/drivers/macintosh/via-pmu68k.c
@@ -26,7 +26,7 @@
#include <linux/miscdevice.h>
#include <linux/blkdev.h>
#include <linux/pci.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/adb.h>
diff --git a/drivers/md/linear.c b/drivers/md/linear.c
index e6b50b84d820..52583645fdf7 100644
--- a/drivers/md/linear.c
+++ b/drivers/md/linear.c
@@ -19,7 +19,7 @@
#include <linux/module.h>
#include <linux/raid/md.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/raid/linear.h>
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 73a5409f999e..b2ed89dcca29 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -61,6 +61,10 @@ extern asmlinkage long sys_setsid(void);
# define dprintk(x...) do { } while(0)
#endif
+#ifndef MODULE
+static void autostart_arrays (void);
+#endif
+
static mdk_personality_t *pers[MAX_PERSONALITY];
/*
@@ -2030,70 +2034,6 @@ abort:
#undef AUTOADDING
#undef AUTORUNNING
-struct {
- int set;
- int noautodetect;
-} raid_setup_args md__initdata;
-
-void md_setup_drive (void) md__init;
-
-/*
- * Searches all registered partitions for autorun RAID arrays
- * at boot time.
- */
-static int detected_devices[128] md__initdata;
-static int dev_cnt;
-
-void md_autodetect_dev(kdev_t dev)
-{
- if (dev_cnt >= 0 && dev_cnt < 127)
- detected_devices[dev_cnt++] = dev;
-}
-
-
-static void autostart_arrays (void)
-{
- mdk_rdev_t *rdev;
- int i;
-
- printk(KERN_INFO "autodetecting RAID arrays\n");
-
- for (i=0; i<dev_cnt; i++) {
- kdev_t dev = detected_devices[i];
-
- if (md_import_device(dev,1)) {
- printk(KERN_ALERT "could not import %s!\n",
- partition_name(dev));
- continue;
- }
- /*
- * Sanity checks:
- */
- rdev = find_rdev_all(dev);
- if (!rdev) {
- MD_BUG();
- continue;
- }
- if (rdev->faulty) {
- MD_BUG();
- continue;
- }
- md_list_add(&rdev->pending, &pending_raid_disks);
- }
-
- autorun_devices(-1);
-}
-
-int md__init md_run_setup(void)
-{
- if (raid_setup_args.noautodetect)
- printk(KERN_INFO "skipping autodetection of RAID arrays\n");
- else
- autostart_arrays();
- dev_cnt = -1; /* make sure further calls to md_autodetect_dev are ignored */
- md_setup_drive();
- return 0;
-}
static int get_version (void * arg)
{
@@ -2555,10 +2495,12 @@ static int md_ioctl (struct inode *inode, struct file *file,
md_print_devices();
goto done_unlock;
+#ifndef MODULE
case RAID_AUTORUN:
err = 0;
autostart_arrays();
goto done;
+#endif
case BLKGETSIZE: /* Return device size */
if (!arg) {
@@ -3556,30 +3498,7 @@ struct notifier_block md_notifier = {
NULL,
0
};
-#ifndef MODULE
-static int md__init raid_setup(char *str)
-{
- int len, pos;
- len = strlen(str) + 1;
- pos = 0;
-
- while (pos < len) {
- char *comma = strchr(str+pos, ',');
- int wlen;
- if (comma)
- wlen = (comma-str)-pos;
- else wlen = (len-1)-pos;
-
- if (strncmp(str, "noautodetect", wlen) == 0)
- raid_setup_args.noautodetect = 1;
- pos += wlen+1;
- }
- raid_setup_args.set = 1;
- return 1;
-}
-__setup("raid=", raid_setup);
-#endif
static void md_geninit (void)
{
int i;
@@ -3641,6 +3560,70 @@ int md__init md_init (void)
return (0);
}
+
+#ifndef MODULE
+
+/*
+ * When md (and any require personalities) are compiled into the kernel
+ * (not a module), arrays can be assembles are boot time using with AUTODETECT
+ * where specially marked partitions are registered with md_autodetect_dev(),
+ * and with MD_BOOT where devices to be collected are given on the boot line
+ * with md=.....
+ * The code for that is here.
+ */
+
+struct {
+ int set;
+ int noautodetect;
+} raid_setup_args md__initdata;
+
+/*
+ * Searches all registered partitions for autorun RAID arrays
+ * at boot time.
+ */
+static int detected_devices[128] md__initdata;
+static int dev_cnt;
+
+void md_autodetect_dev(kdev_t dev)
+{
+ if (dev_cnt >= 0 && dev_cnt < 127)
+ detected_devices[dev_cnt++] = dev;
+}
+
+
+static void autostart_arrays (void)
+{
+ mdk_rdev_t *rdev;
+ int i;
+
+ printk(KERN_INFO "autodetecting RAID arrays\n");
+
+ for (i=0; i<dev_cnt; i++) {
+ kdev_t dev = detected_devices[i];
+
+ if (md_import_device(dev,1)) {
+ printk(KERN_ALERT "could not import %s!\n",
+ partition_name(dev));
+ continue;
+ }
+ /*
+ * Sanity checks:
+ */
+ rdev = find_rdev_all(dev);
+ if (!rdev) {
+ MD_BUG();
+ continue;
+ }
+ if (rdev->faulty) {
+ MD_BUG();
+ continue;
+ }
+ md_list_add(&rdev->pending, &pending_raid_disks);
+ }
+
+ autorun_devices(-1);
+}
+
static struct {
char device_set [MAX_MD_DEVS];
int pers[MAX_MD_DEVS];
@@ -3809,9 +3792,47 @@ void md__init md_setup_drive(void)
}
}
+static int md__init raid_setup(char *str)
+{
+ int len, pos;
+
+ len = strlen(str) + 1;
+ pos = 0;
+
+ while (pos < len) {
+ char *comma = strchr(str+pos, ',');
+ int wlen;
+ if (comma)
+ wlen = (comma-str)-pos;
+ else wlen = (len-1)-pos;
+
+ if (strncmp(str, "noautodetect", wlen) == 0)
+ raid_setup_args.noautodetect = 1;
+ pos += wlen+1;
+ }
+ raid_setup_args.set = 1;
+ return 1;
+}
+
+int md__init md_run_setup(void)
+{
+ if (raid_setup_args.noautodetect)
+ printk(KERN_INFO "skipping autodetection of RAID arrays\n");
+ else
+ autostart_arrays();
+ dev_cnt = -1; /* make sure further calls to md_autodetect_dev are ignored */
+ md_setup_drive();
+ return 0;
+}
+
+__setup("raid=", raid_setup);
__setup("md=", md_setup);
-#ifdef MODULE
+__initcall(md_init);
+__initcall(md_run_setup);
+
+#else /* It is a MODULE */
+
int init_module (void)
{
return md_init();
@@ -3860,9 +3881,6 @@ void cleanup_module (void)
}
#endif
-__initcall(md_init);
-__initcall(md_run_setup);
-
MD_EXPORT_SYMBOL(md_size);
MD_EXPORT_SYMBOL(register_md_personality);
MD_EXPORT_SYMBOL(unregister_md_personality);
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index 3a381b6a22fc..358cb7caca5c 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -23,7 +23,7 @@
*/
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/raid/raid1.h>
#include <asm/atomic.h>
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 13903c6c1bac..d00cda6d480c 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -19,7 +19,7 @@
#include <linux/config.h>
#include <linux/module.h>
#include <linux/locks.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/raid/raid5.h>
#include <asm/bitops.h>
#include <asm/atomic.h>
@@ -381,7 +381,7 @@ static void raid5_end_read_request (struct buffer_head * bh, int uptodate)
if (bh == sh->bh_cache[i])
break;
- PRINTK("end_read_request %lu/%d, %d, count: %d, uptodate %d.\n", sh->sector, i, atomic_read(&sh->count), uptodate);
+ PRINTK("end_read_request %lu/%d, count: %d, uptodate %d.\n", sh->sector, i, atomic_read(&sh->count), uptodate);
if (i == disks) {
BUG();
return;
@@ -680,7 +680,6 @@ static void compute_parity(struct stripe_head *sh, int method)
count = 1;
bh_ptr[0] = sh->bh_cache[pd_idx];
- spin_lock_irq(&conf->device_lock);
switch(method) {
case READ_MODIFY_WRITE:
if (!buffer_uptodate(sh->bh_cache[pd_idx]))
@@ -707,13 +706,11 @@ static void compute_parity(struct stripe_head *sh, int method)
sh->bh_write[i] = sh->bh_write[i]->b_reqnext;
chosen[i]->b_reqnext = sh->bh_written[i];
sh->bh_written[i] = chosen[i];
- check_xor();
}
break;
case CHECK_PARITY:
break;
}
- spin_unlock_irq(&conf->device_lock);
if (count>1) {
xor_block(count, bh_ptr);
count = 1;
@@ -723,7 +720,6 @@ static void compute_parity(struct stripe_head *sh, int method)
if (chosen[i]) {
struct buffer_head *bh = sh->bh_cache[i];
char *bdata;
- mark_buffer_clean(chosen[i]); /* NO FIXME */
bdata = bh_kmap(chosen[i]);
memcpy(bh->b_data,
bdata,sh->size);
@@ -766,6 +762,7 @@ static void add_stripe_bh (struct stripe_head *sh, struct buffer_head *bh, int d
PRINTK("adding bh b#%lu to stripe s#%lu\n", bh->b_blocknr, sh->sector);
+ spin_lock(&sh->lock);
spin_lock_irq(&conf->device_lock);
bh->b_reqnext = NULL;
if (rw == READ)
@@ -778,6 +775,7 @@ static void add_stripe_bh (struct stripe_head *sh, struct buffer_head *bh, int d
}
*bhp = bh;
spin_unlock_irq(&conf->device_lock);
+ spin_unlock(&sh->lock);
PRINTK("added bh b#%lu to stripe s#%lu, disk %d.\n", bh->b_blocknr, sh->sector, dd_idx);
}
@@ -827,7 +825,7 @@ static void handle_stripe(struct stripe_head *sh)
for (i=disks; i--; ) {
bh = sh->bh_cache[i];
- PRINTK("check %d: state %lx read %p write %p written %p\n", i, bh->b_state, sh->bh_read[i], sh->bh_write[i], sh->bh_written[i]);
+ PRINTK("check %d: state 0x%lx read %p write %p written %p\n", i, bh->b_state, sh->bh_read[i], sh->bh_write[i], sh->bh_written[i]);
/* maybe we can reply to a read */
if (buffer_uptodate(bh) && sh->bh_read[i]) {
struct buffer_head *rbh, *rbh2;
@@ -867,7 +865,6 @@ static void handle_stripe(struct stripe_head *sh)
* need to be failed
*/
if (failed > 1 && to_read+to_write) {
- spin_lock_irq(&conf->device_lock);
for (i=disks; i--; ) {
/* fail all writes first */
if (sh->bh_write[i]) to_write--;
@@ -878,15 +875,16 @@ static void handle_stripe(struct stripe_head *sh)
}
/* fail any reads if this device is non-operational */
if (!conf->disks[i].operational) {
+ spin_lock_irq(&conf->device_lock);
if (sh->bh_read[i]) to_read--;
while ((bh = sh->bh_read[i])) {
sh->bh_read[i] = bh->b_reqnext;
bh->b_reqnext = return_fail;
return_fail = bh;
}
+ spin_unlock_irq(&conf->device_lock);
}
}
- spin_unlock_irq(&conf->device_lock);
if (syncing) {
md_done_sync(conf->mddev, (sh->size>>10) - sh->sync_redone,0);
clear_bit(STRIPE_SYNCING, &sh->state);
@@ -911,10 +909,8 @@ static void handle_stripe(struct stripe_head *sh)
/* maybe we can return some write requests */
struct buffer_head *wbh, *wbh2;
PRINTK("Return write for disc %d\n", i);
- spin_lock_irq(&conf->device_lock);
wbh = sh->bh_written[i];
sh->bh_written[i] = NULL;
- spin_unlock_irq(&conf->device_lock);
while (wbh) {
wbh2 = wbh->b_reqnext;
wbh->b_reqnext = return_ok;
@@ -1092,8 +1088,6 @@ static void handle_stripe(struct stripe_head *sh)
bh->b_dev = conf->disks[i].dev;
else if (conf->spare && action[i] == WRITE+1)
bh->b_dev = conf->spare->dev;
- else if (action[i] == READ+1)
- BUG();
else skip=1;
if (!skip) {
PRINTK("for %ld schedule op %d on disc %d\n", sh->sector, action[i]-1, i);
diff --git a/drivers/media/video/bttv-driver.c b/drivers/media/video/bttv-driver.c
index 7ce4a4cf8939..900aea47752c 100644
--- a/drivers/media/video/bttv-driver.c
+++ b/drivers/media/video/bttv-driver.c
@@ -27,7 +27,7 @@
#include <linux/fs.h>
#include <linux/kernel.h>
#include <linux/major.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/poll.h>
#include <linux/pci.h>
diff --git a/drivers/media/video/buz.c b/drivers/media/video/buz.c
index baaa8f4ae585..69a490285a18 100644
--- a/drivers/media/video/buz.c
+++ b/drivers/media/video/buz.c
@@ -36,7 +36,7 @@
#include <linux/fs.h>
#include <linux/kernel.h>
#include <linux/major.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/pci.h>
#include <linux/signal.h>
diff --git a/drivers/media/video/bw-qcam.c b/drivers/media/video/bw-qcam.c
index 602adb7d568d..1003edc543df 100644
--- a/drivers/media/video/bw-qcam.c
+++ b/drivers/media/video/bw-qcam.c
@@ -70,7 +70,7 @@ OTHER DEALINGS IN THE SOFTWARE.
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/parport.h>
#include <linux/sched.h>
diff --git a/drivers/media/video/c-qcam.c b/drivers/media/video/c-qcam.c
index 642049de9d04..c8487d69c6b4 100644
--- a/drivers/media/video/c-qcam.c
+++ b/drivers/media/video/c-qcam.c
@@ -29,7 +29,7 @@
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/parport.h>
#include <linux/sched.h>
diff --git a/drivers/media/video/i2c-old.c b/drivers/media/video/i2c-old.c
index c896057cd56e..efe733ae2178 100644
--- a/drivers/media/video/i2c-old.c
+++ b/drivers/media/video/i2c-old.c
@@ -14,7 +14,7 @@
#include <linux/delay.h>
#include <linux/locks.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/i2c-old.h>
#define REGPRINT(x) if (verbose) (x)
diff --git a/drivers/media/video/msp3400.c b/drivers/media/video/msp3400.c
index b6ae3f62c4f4..bffb15220d70 100644
--- a/drivers/media/video/msp3400.c
+++ b/drivers/media/video/msp3400.c
@@ -42,7 +42,7 @@
#include <linux/timer.h>
#include <linux/delay.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/i2c.h>
#include <linux/videodev.h>
#include <asm/semaphore.h>
diff --git a/drivers/media/video/planb.c b/drivers/media/video/planb.c
index 7fcfcc945979..9030e163ae08 100644
--- a/drivers/media/video/planb.c
+++ b/drivers/media/video/planb.c
@@ -33,7 +33,7 @@
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/major.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/types.h>
#include <linux/pci.h>
#include <linux/delay.h>
diff --git a/drivers/media/video/pms.c b/drivers/media/video/pms.c
index 77893ad782e8..b2d8181c9c73 100644
--- a/drivers/media/video/pms.c
+++ b/drivers/media/video/pms.c
@@ -19,7 +19,7 @@
#include <linux/errno.h>
#include <linux/fs.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/ioport.h>
#include <linux/init.h>
diff --git a/drivers/media/video/saa7111.c b/drivers/media/video/saa7111.c
index 1eeeca352419..d55e3f1e4089 100644
--- a/drivers/media/video/saa7111.c
+++ b/drivers/media/video/saa7111.c
@@ -24,7 +24,7 @@
#include <linux/fs.h>
#include <linux/kernel.h>
#include <linux/major.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/pci.h>
#include <linux/signal.h>
diff --git a/drivers/media/video/saa7185.c b/drivers/media/video/saa7185.c
index c30e6353b6c2..a3f664f845b3 100644
--- a/drivers/media/video/saa7185.c
+++ b/drivers/media/video/saa7185.c
@@ -24,7 +24,7 @@
#include <linux/fs.h>
#include <linux/kernel.h>
#include <linux/major.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/pci.h>
#include <linux/signal.h>
diff --git a/drivers/media/video/stradis.c b/drivers/media/video/stradis.c
index 88c1e4baffda..d087d7a97e7e 100644
--- a/drivers/media/video/stradis.c
+++ b/drivers/media/video/stradis.c
@@ -26,7 +26,7 @@
#include <linux/fs.h>
#include <linux/kernel.h>
#include <linux/major.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/init.h>
#include <linux/poll.h>
diff --git a/drivers/media/video/tda7432.c b/drivers/media/video/tda7432.c
index 889856738bc3..f40e58121c1c 100644
--- a/drivers/media/video/tda7432.c
+++ b/drivers/media/video/tda7432.c
@@ -34,7 +34,7 @@
#include <linux/timer.h>
#include <linux/delay.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/videodev.h>
#include <linux/i2c.h>
#include <linux/i2c-algo-bit.h>
diff --git a/drivers/media/video/tda9875.c b/drivers/media/video/tda9875.c
index 0cead825fd82..6f6784e3b943 100644
--- a/drivers/media/video/tda9875.c
+++ b/drivers/media/video/tda9875.c
@@ -24,7 +24,7 @@
#include <linux/timer.h>
#include <linux/delay.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/videodev.h>
#include <linux/i2c.h>
#include <linux/i2c-algo-bit.h>
diff --git a/drivers/media/video/tuner-3036.c b/drivers/media/video/tuner-3036.c
index 807ae339b16c..cfa0882fab04 100644
--- a/drivers/media/video/tuner-3036.c
+++ b/drivers/media/video/tuner-3036.c
@@ -20,7 +20,7 @@
#include <linux/timer.h>
#include <linux/delay.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/version.h>
#include <linux/init.h>
diff --git a/drivers/media/video/tuner.c b/drivers/media/video/tuner.c
index 9316ef72ffef..9ff3c35415e2 100644
--- a/drivers/media/video/tuner.c
+++ b/drivers/media/video/tuner.c
@@ -5,7 +5,7 @@
#include <linux/timer.h>
#include <linux/delay.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/poll.h>
#include <linux/i2c.h>
#include <linux/types.h>
diff --git a/drivers/media/video/tvaudio.c b/drivers/media/video/tvaudio.c
index 5a9c4575c4fb..8d037e3ccd70 100644
--- a/drivers/media/video/tvaudio.c
+++ b/drivers/media/video/tvaudio.c
@@ -22,7 +22,7 @@
#include <linux/timer.h>
#include <linux/delay.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/videodev.h>
#include <linux/i2c.h>
#include <linux/i2c-algo-bit.h>
diff --git a/drivers/media/video/tvmixer.c b/drivers/media/video/tvmixer.c
index 1e406921ec3e..944572f56917 100644
--- a/drivers/media/video/tvmixer.c
+++ b/drivers/media/video/tvmixer.c
@@ -5,7 +5,7 @@
#include <linux/timer.h>
#include <linux/delay.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/i2c.h>
#include <linux/videodev.h>
#include <asm/semaphore.h>
diff --git a/drivers/media/video/zr36120.c b/drivers/media/video/zr36120.c
index 478af01f57d3..331ac4d3ffa1 100644
--- a/drivers/media/video/zr36120.c
+++ b/drivers/media/video/zr36120.c
@@ -25,7 +25,7 @@
#include <linux/fs.h>
#include <linux/kernel.h>
#include <linux/major.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/mm.h>
#include <linux/pci.h>
diff --git a/drivers/mtd/cfi_cmdset_0001.c b/drivers/mtd/cfi_cmdset_0001.c
index 44fb4ec36238..56e5a394afc5 100644
--- a/drivers/mtd/cfi_cmdset_0001.c
+++ b/drivers/mtd/cfi_cmdset_0001.c
@@ -15,7 +15,7 @@
#include <asm/byteorder.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/mtd/map.h>
#include <linux/mtd/cfi.h>
diff --git a/drivers/mtd/cfi_cmdset_0002.c b/drivers/mtd/cfi_cmdset_0002.c
index 7e2b4aa41b32..3b0d9b7af896 100644
--- a/drivers/mtd/cfi_cmdset_0002.c
+++ b/drivers/mtd/cfi_cmdset_0002.c
@@ -18,7 +18,7 @@
#include <asm/byteorder.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/mtd/map.h>
#include <linux/mtd/cfi.h>
diff --git a/drivers/mtd/cfi_probe.c b/drivers/mtd/cfi_probe.c
index e46d26f568eb..f44ba58173ee 100644
--- a/drivers/mtd/cfi_probe.c
+++ b/drivers/mtd/cfi_probe.c
@@ -11,7 +11,7 @@
#include <asm/io.h>
#include <asm/byteorder.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mtd/map.h>
#include <linux/mtd/cfi.h>
diff --git a/drivers/mtd/doc1000.c b/drivers/mtd/doc1000.c
index 584745359dbd..a681652c0c22 100644
--- a/drivers/mtd/doc1000.c
+++ b/drivers/mtd/doc1000.c
@@ -12,7 +12,7 @@
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/timer.h>
#include <linux/major.h>
diff --git a/drivers/mtd/doc2000.c b/drivers/mtd/doc2000.c
index 22ef68e62fda..4957fcd6695f 100644
--- a/drivers/mtd/doc2000.c
+++ b/drivers/mtd/doc2000.c
@@ -15,7 +15,7 @@
#include <linux/miscdevice.h>
#include <linux/pci.h>
#include <linux/delay.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/init.h>
#include <linux/types.h>
diff --git a/drivers/mtd/doc2001.c b/drivers/mtd/doc2001.c
index 79aa3630dbc3..d80143783a7c 100644
--- a/drivers/mtd/doc2001.c
+++ b/drivers/mtd/doc2001.c
@@ -15,7 +15,7 @@
#include <linux/miscdevice.h>
#include <linux/pci.h>
#include <linux/delay.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/init.h>
#include <linux/types.h>
diff --git a/drivers/mtd/docecc.c b/drivers/mtd/docecc.c
index cddc968c0d49..c10ff2b88bcc 100644
--- a/drivers/mtd/docecc.c
+++ b/drivers/mtd/docecc.c
@@ -31,7 +31,7 @@
#include <linux/miscdevice.h>
#include <linux/pci.h>
#include <linux/delay.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/init.h>
#include <linux/types.h>
diff --git a/drivers/mtd/docprobe.c b/drivers/mtd/docprobe.c
index 37fec2a0ce3f..9f5ba083bdb5 100644
--- a/drivers/mtd/docprobe.c
+++ b/drivers/mtd/docprobe.c
@@ -50,7 +50,7 @@
#include <linux/miscdevice.h>
#include <linux/pci.h>
#include <linux/delay.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/init.h>
#include <linux/types.h>
diff --git a/drivers/mtd/ftl.c b/drivers/mtd/ftl.c
index 72bd03297728..aaa948b647c4 100644
--- a/drivers/mtd/ftl.c
+++ b/drivers/mtd/ftl.c
@@ -68,7 +68,7 @@
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/timer.h>
#include <linux/major.h>
diff --git a/drivers/mtd/map_ram.c b/drivers/mtd/map_ram.c
index 00c009d7fcb9..1a4e5a06a761 100644
--- a/drivers/mtd/map_ram.c
+++ b/drivers/mtd/map_ram.c
@@ -10,7 +10,7 @@
#include <asm/io.h>
#include <asm/byteorder.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mtd/map.h>
diff --git a/drivers/mtd/map_rom.c b/drivers/mtd/map_rom.c
index c976c7ecf54f..455cb99fd97a 100644
--- a/drivers/mtd/map_rom.c
+++ b/drivers/mtd/map_rom.c
@@ -10,7 +10,7 @@
#include <asm/io.h>
#include <asm/byteorder.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mtd/map.h>
diff --git a/drivers/mtd/mixmem.c b/drivers/mtd/mixmem.c
index 8326f864b975..18fc4e2d7a70 100644
--- a/drivers/mtd/mixmem.c
+++ b/drivers/mtd/mixmem.c
@@ -11,7 +11,7 @@
*/
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <asm/io.h>
#include <linux/init.h>
diff --git a/drivers/mtd/mtdblock.c b/drivers/mtd/mtdblock.c
index d1344468bdb1..5ab6437c1312 100644
--- a/drivers/mtd/mtdblock.c
+++ b/drivers/mtd/mtdblock.c
@@ -10,7 +10,7 @@
#include <linux/types.h>
#include <linux/module.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mtd/mtd.h>
#define MAJOR_NR MTD_BLOCK_MAJOR
diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c
index fed9e37d7cbf..8a866f28dd8c 100644
--- a/drivers/mtd/mtdchar.c
+++ b/drivers/mtd/mtdchar.c
@@ -12,7 +12,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/mtd/mtd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#ifdef CONFIG_DEVFS_FS
#include <linux/devfs_fs_kernel.h>
diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
index 8c30838ba4d2..df58ba446c3c 100644
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
@@ -11,7 +11,7 @@
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/timer.h>
#include <linux/major.h>
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index 0135be39ea43..7101f7b2bdae 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -11,7 +11,7 @@
#include <linux/module.h>
#include <linux/types.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/list.h>
#include <linux/mtd/mtd.h>
diff --git a/drivers/mtd/mtdram.c b/drivers/mtd/mtdram.c
index bac119919429..d3a33495d628 100644
--- a/drivers/mtd/mtdram.c
+++ b/drivers/mtd/mtdram.c
@@ -12,7 +12,7 @@
#include <linux/config.h>
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/mtd/compatmac.h>
#include <linux/mtd/mtd.h>
diff --git a/drivers/mtd/nftl.c b/drivers/mtd/nftl.c
index d7e2aeaadc34..be82bfd91fcd 100644
--- a/drivers/mtd/nftl.c
+++ b/drivers/mtd/nftl.c
@@ -63,7 +63,7 @@
#include <linux/miscdevice.h>
#include <linux/pci.h>
#include <linux/delay.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/init.h>
#include <linux/blkpg.h>
diff --git a/drivers/mtd/nftlmount.c b/drivers/mtd/nftlmount.c
index 938b62418217..72f734d98488 100644
--- a/drivers/mtd/nftlmount.c
+++ b/drivers/mtd/nftlmount.c
@@ -28,7 +28,7 @@
#include <linux/miscdevice.h>
#include <linux/pci.h>
#include <linux/delay.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/init.h>
#include <linux/mtd/mtd.h>
diff --git a/drivers/mtd/octagon-5066.c b/drivers/mtd/octagon-5066.c
index 70e78d7e9c03..8fa40e9e9c96 100644
--- a/drivers/mtd/octagon-5066.c
+++ b/drivers/mtd/octagon-5066.c
@@ -25,7 +25,7 @@
##################################################################### */
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/init.h>
#include <asm/io.h>
diff --git a/drivers/mtd/pmc551.c b/drivers/mtd/pmc551.c
index 55c5fe529fdd..bfdc73512051 100644
--- a/drivers/mtd/pmc551.c
+++ b/drivers/mtd/pmc551.c
@@ -78,7 +78,7 @@
#include <linux/sched.h>
#include <linux/init.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/timer.h>
#include <linux/major.h>
diff --git a/drivers/mtd/slram.c b/drivers/mtd/slram.c
index 8260dd7e5a41..d2e4f8ed294c 100644
--- a/drivers/mtd/slram.c
+++ b/drivers/mtd/slram.c
@@ -11,7 +11,7 @@
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/timer.h>
#include <linux/major.h>
diff --git a/drivers/mtd/vmax301.c b/drivers/mtd/vmax301.c
index 007987b85e61..cab69b451869 100644
--- a/drivers/mtd/vmax301.c
+++ b/drivers/mtd/vmax301.c
@@ -17,7 +17,7 @@
##################################################################### */
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/init.h>
#include <asm/spinlock.h>
diff --git a/drivers/net/3c523.c b/drivers/net/3c523.c
index bf17e006fda4..7565d48909d8 100644
--- a/drivers/net/3c523.c
+++ b/drivers/net/3c523.c
@@ -3,7 +3,7 @@
This is an extension to the Linux operating system, and is covered by the
- same Gnu Public License that covers that work.
+ same GNU General Public License that covers that work.
Copyright 1995, 1996 by Chris Beauregard (cpbeaure@undergrad.math.uwaterloo.ca)
@@ -91,7 +91,7 @@
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/ioport.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/delay.h>
#include <linux/mca.h>
@@ -148,9 +148,9 @@ sizeof(nop_cmd) = 8;
#define RECV_BUFF_SIZE 1524 /* slightly oversized */
#define XMIT_BUFF_SIZE 1524 /* slightly oversized */
-#define NUM_XMIT_BUFFS 4 /* config for both, 8K and 16K shmem */
-#define NUM_RECV_BUFFS_8 1 /* config for 8K shared mem */
-#define NUM_RECV_BUFFS_16 6 /* config for 16K shared mem */
+#define NUM_XMIT_BUFFS 1 /* config for both, 8K and 16K shmem */
+#define NUM_RECV_BUFFS_8 4 /* config for 8K shared mem */
+#define NUM_RECV_BUFFS_16 9 /* config for 16K shared mem */
#if (NUM_XMIT_BUFFS == 1)
#define NO_NOPCOMMANDS /* only possible with NUM_XMIT_BUFFS=1 */
@@ -197,6 +197,7 @@ struct priv {
struct net_device_stats stats;
unsigned long base;
char *memtop;
+ unsigned long mapped_start; /* Start of ioremap */
volatile struct rfd_struct *rfd_last, *rfd_top, *rfd_first;
volatile struct scp_struct *scp; /* volatile is important */
volatile struct iscp_struct *iscp; /* volatile is important */
@@ -303,13 +304,13 @@ static int __init check586(struct net_device *dev, unsigned long where, unsigned
char *iscp_addrs[2];
int i = 0;
- p->base = where + size - 0x01000000;
- p->memtop = phys_to_virt(where) + size;
- p->scp = (struct scp_struct *)phys_to_virt(p->base + SCP_DEFAULT_ADDRESS);
+ p->base = (unsigned long) bus_to_virt((unsigned long)where) + size - 0x01000000;
+ p->memtop = bus_to_virt((unsigned long)where) + size;
+ p->scp = (struct scp_struct *)(p->base + SCP_DEFAULT_ADDRESS);
memset((char *) p->scp, 0, sizeof(struct scp_struct));
p->scp->sysbus = SYSBUSVAL; /* 1 = 8Bit-Bus, 0 = 16 Bit */
- iscp_addrs[0] = phys_to_virt(where);
+ iscp_addrs[0] = bus_to_virt((unsigned long)where);
iscp_addrs[1] = (char *) p->scp - sizeof(struct iscp_struct);
for (i = 0; i < 2; i++) {
@@ -325,6 +326,7 @@ static int __init check586(struct net_device *dev, unsigned long where, unsigned
/* apparently, you sometimes have to kick the 82586 twice... */
elmc_id_attn586();
+ DELAY(1);
if (p->iscp->busy) { /* i82586 clears 'busy' after successful init */
return 0;
@@ -344,8 +346,8 @@ void alloc586(struct net_device *dev)
elmc_id_reset586();
DELAY(2);
- p->scp = (struct scp_struct *) phys_to_virt(p->base + SCP_DEFAULT_ADDRESS);
- p->scb = (struct scb_struct *) phys_to_virt(dev->mem_start);
+ p->scp = (struct scp_struct *) (p->base + SCP_DEFAULT_ADDRESS);
+ p->scb = (struct scb_struct *) bus_to_virt(dev->mem_start);
p->iscp = (struct iscp_struct *) ((char *) p->scp - sizeof(struct iscp_struct));
memset((char *) p->iscp, 0, sizeof(struct iscp_struct));
@@ -409,6 +411,8 @@ int __init elmc_probe(struct net_device *dev)
u_char revision = 0;
int i = 0;
unsigned int size = 0;
+ int retval;
+ struct priv *pr;
SET_MODULE_OWNER(dev);
if (MCA_bus == 0) {
@@ -428,18 +432,24 @@ int __init elmc_probe(struct net_device *dev)
Also reject it if the card is already in use.
*/
- if((irq && irq != dev->irq) || (base_addr && base_addr != dev->base_addr)
- || check_region(dev->base_addr,ELMC_IO_EXTENT)) {
+ if ((irq && irq != dev->irq) ||
+ (base_addr && base_addr != dev->base_addr)) {
slot = mca_find_adapter(ELMC_MCA_ID, slot + 1);
continue;
}
+ if (!request_region(dev->base_addr, ELMC_IO_EXTENT, dev->name)) {
+ slot = mca_find_adapter(ELMC_MCA_ID, slot + 1);
+ continue;
+ }
+
/* found what we're looking for... */
break;
}
/* we didn't find any 3c523 in the slots we checked for */
if (slot == MCA_NOTFOUND) {
- return ((base_addr || irq) ? ENXIO : ENODEV);
+ retval = ((base_addr || irq) ? -ENXIO : -ENODEV);
+ goto err_out;
}
mca_set_adapter_name(slot, "3Com 3c523 Etherlink/MC");
mca_set_adapter_procfn(slot, (MCA_ProcFn) elmc_getinfo, dev);
@@ -479,15 +489,14 @@ int __init elmc_probe(struct net_device *dev)
break;
}
- request_region(dev->base_addr, ELMC_IO_EXTENT, "3c523");
-
- dev->priv = (void *) kmalloc(sizeof(struct priv), GFP_KERNEL);
+ pr = dev->priv = kmalloc(sizeof(struct priv), GFP_KERNEL);
if (dev->priv == NULL) {
- return -ENOMEM;
+ retval = -ENOMEM;
+ goto err_out;
}
- memset((char *) dev->priv, 0, sizeof(struct priv));
+ memset(pr, 0, sizeof(struct priv));
- ((struct priv *) (dev->priv))->slot = slot;
+ pr->slot = slot;
printk(KERN_INFO "%s: 3Com 3c523 Rev 0x%x at %#lx\n", dev->name, (int) revision,
dev->base_addr);
@@ -513,18 +522,21 @@ int __init elmc_probe(struct net_device *dev)
if (!check586(dev, dev->mem_start, size)) {
printk(KERN_ERR "%s: memprobe, Can't find memory at 0x%lx!\n", dev->name,
dev->mem_start);
- release_region(dev->base_addr, ELMC_IO_EXTENT);
- return -ENODEV;
+ kfree(dev->priv);
+ dev->priv = NULL;
+ retval = -ENODEV;
+ goto err_out;
}
dev->mem_end = dev->mem_start + size; /* set mem_end showed by 'ifconfig' */
- ((struct priv *) (dev->priv))->base = dev->mem_start + size - 0x01000000;
+ ((struct priv *) (dev->priv))->memtop = bus_to_virt(dev->mem_start) + size;
+ ((struct priv *) (dev->priv))->base = (unsigned long) bus_to_virt(dev->mem_start) + size - 0x01000000;
alloc586(dev);
elmc_id_reset586(); /* make sure it doesn't generate spurious ints */
/* set number of receive-buffs according to memsize */
- ((struct priv *) dev->priv)->num_recv_buffs = NUM_RECV_BUFFS_16;
+ pr->num_recv_buffs = NUM_RECV_BUFFS_16;
/* dump all the assorted information */
printk(KERN_INFO "%s: IRQ %d, %sternal xcvr, memory %#lx-%#lx.\n", dev->name,
@@ -563,6 +575,9 @@ int __init elmc_probe(struct net_device *dev)
#endif
return 0;
+err_out:
+ release_region(dev->base_addr, ELMC_IO_EXTENT);
+ return retval;
}
/**********************************************
@@ -944,9 +959,11 @@ static void elmc_rcv_int(struct net_device *dev)
if (skb != NULL) {
skb->dev = dev;
skb_reserve(skb, 2); /* 16 byte alignment */
- memcpy(skb_put(skb, totlen), (u8 *)phys_to_virt(p->base) + (unsigned long) rbd->buffer, totlen);
+ skb_put(skb,totlen);
+ eth_copy_and_sum(skb, (char *) p->base+(unsigned long) rbd->buffer,totlen,0);
skb->protocol = eth_type_trans(skb, dev);
netif_rx(skb);
+ dev->last_rx = jiffies;
p->stats.rx_packets++;
p->stats.rx_bytes += totlen;
} else {
@@ -1086,6 +1103,7 @@ static void elmc_timeout(struct net_device *dev)
static int elmc_send_packet(struct sk_buff *skb, struct net_device *dev)
{
int len;
+ int i;
#ifndef NO_NOPCOMMANDS
int next_nop;
#endif
diff --git a/drivers/net/3c523.h b/drivers/net/3c523.h
index 2a4f1bfc9c15..aa67b871db0b 100644
--- a/drivers/net/3c523.h
+++ b/drivers/net/3c523.h
@@ -9,7 +9,7 @@
* Intel i82586 Ethernet definitions
*
* This is an extension to the Linux operating system, and is covered by the
- * same Gnu Public License that covers that work.
+ * same GNU General Public License that covers that work.
*
* Copyright 1995 by Chris Beauregard (cpbeaure@undergrad.math.uwaterloo.ca)
*
diff --git a/drivers/net/de4x5.c b/drivers/net/de4x5.c
index b8e1e297d562..fa894d6440cb 100644
--- a/drivers/net/de4x5.c
+++ b/drivers/net/de4x5.c
@@ -445,7 +445,7 @@ static const char *version = "de4x5.c:V0.545 1999/11/28 davies@maniac.ultranet.c
#include <linux/ptrace.h>
#include <linux/errno.h>
#include <linux/ioport.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pci.h>
#include <linux/delay.h>
#include <linux/init.h>
@@ -1662,6 +1662,7 @@ de4x5_interrupt(int irq, void *dev_id, struct pt_regs *regs)
STOP_DE4X5;
printk("%s: Fatal bus error occurred, sts=%#8x, device stopped.\n",
dev->name, sts);
+ spin_unlock(&lp->lock);
return;
}
}
@@ -1733,6 +1734,7 @@ de4x5_rx(struct net_device *dev)
netif_rx(skb);
/* Update stats */
+ dev->last_rx = jiffies;
lp->stats.rx_packets++;
lp->stats.rx_bytes += pkt_len;
de4x5_local_stats(dev, skb->data, pkt_len);
diff --git a/drivers/net/de4x5.h b/drivers/net/de4x5.h
index 9e40adc74235..4ab3889b7d2d 100644
--- a/drivers/net/de4x5.h
+++ b/drivers/net/de4x5.h
@@ -2,7 +2,7 @@
Copyright 1994 Digital Equipment Corporation.
This software may be used and distributed according to the terms of the
- GNU Public License, incorporated herein by reference.
+ GNU General Public License, incorporated herein by reference.
The author may be reached as davies@wanton.lkg.dec.com or Digital
Equipment Corporation, 550 King Street, Littleton MA 01460.
diff --git a/drivers/net/ewrk3.c b/drivers/net/ewrk3.c
index 5b1726c32059..9f9b376e8e09 100644
--- a/drivers/net/ewrk3.c
+++ b/drivers/net/ewrk3.c
@@ -136,8 +136,6 @@
=========================================================================
*/
-static const char *version = "ewrk3.c:v0.43 96/8/16 davies@maniac.ultranet.com\n";
-
#include <linux/config.h>
#include <linux/module.h>
@@ -147,7 +145,7 @@ static const char *version = "ewrk3.c:v0.43 96/8/16 davies@maniac.ultranet.com\n
#include <linux/ptrace.h>
#include <linux/errno.h>
#include <linux/ioport.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/delay.h>
#include <linux/init.h>
@@ -167,6 +165,9 @@ static const char *version = "ewrk3.c:v0.43 96/8/16 davies@maniac.ultranet.com\n
#include "ewrk3.h"
+static const char version[] __initdata =
+"ewrk3.c:v0.43a 2001/02/04 davies@maniac.ultranet.com\n";
+
#ifdef EWRK3_DEBUG
static int ewrk3_debug = EWRK3_DEBUG;
#else
@@ -273,9 +274,9 @@ struct ewrk3_private {
u_char mPage; /* Maximum 2kB Page number */
u_char lemac; /* Chip rev. level */
u_char hard_strapped; /* Don't allow a full open */
- u_char lock; /* Lock the page register */
u_char txc; /* Transmit cut through */
u_char *mctbl; /* Pointer to the multicast table */
+ spinlock_t hw_lock;
};
/*
@@ -530,6 +531,7 @@ ewrk3_hw_init(struct net_device *dev, u_long iobase)
lp->shmem_length = shmem_length;
lp->lemac = lemac;
lp->hard_strapped = hard_strapped;
+ spin_lock_init(&lp->hw_lock);
lp->mPage = 64;
if (cmr & CMR_DRAM)
@@ -715,8 +717,6 @@ static void ewrk3_init(struct net_device *dev)
outb(page, EWRK3_FMQ); /* to the Free Memory Queue */
}
- lp->lock = 0; /* Ensure there are no locks */
-
START_EWRK3; /* Enable the TX and/or RX */
}
@@ -760,111 +760,118 @@ static void ewrk3_timeout(struct net_device *dev)
/*
** Writes a socket buffer to the free page queue
*/
-static int ewrk3_queue_pkt(struct sk_buff *skb, struct net_device *dev)
+static int ewrk3_queue_pkt (struct sk_buff *skb, struct net_device *dev)
{
struct ewrk3_private *lp = (struct ewrk3_private *) dev->priv;
u_long iobase = dev->base_addr;
- int status = 0;
+ u_long buf = 0;
u_char icr;
+ u_char page;
- netif_stop_queue(dev);
-#ifdef CONFIG_SMP
-#error "This needs spinlocks"
-#endif
- DISABLE_IRQs; /* So that the page # remains correct */
+ spin_lock_irq (&lp->hw_lock);
+ DISABLE_IRQs;
+
+ /* if no resources available, exit, request packet be queued */
+ if (inb (EWRK3_FMQC) == 0) {
+ printk (KERN_WARNING "%s: ewrk3_queue_pkt(): No free resources...\n",
+ dev->name);
+ printk (KERN_WARNING "%s: ewrk3_queue_pkt(): CSR: %02x ICR: %02x FMQC: %02x\n",
+ dev->name, inb (EWRK3_CSR), inb (EWRK3_ICR),
+ inb (EWRK3_FMQC));
+ goto err_out;
+ }
/*
- ** Get a free page from the FMQ when resources are available
+ ** Get a free page from the FMQ
*/
- if (inb(EWRK3_FMQC) > 0)
- {
- u_long buf = 0;
- u_char page;
+ if ((page = inb (EWRK3_FMQ)) >= lp->mPage) {
+ printk ("ewrk3_queue_pkt(): Invalid free memory page (%d).\n",
+ (u_char) page);
+ goto err_out;
+ }
- if ((page = inb(EWRK3_FMQ)) < lp->mPage) {
- /*
- ** Set up shared memory window and pointer into the window
- */
- while (test_and_set_bit(0, (void *) &lp->lock) != 0); /* Wait for lock to free */
- if (lp->shmem_length == IO_ONLY) {
- outb(page, EWRK3_IOPR);
- } else if (lp->shmem_length == SHMEM_2K) {
- buf = lp->shmem_base;
- outb(page, EWRK3_MPR);
- } else if (lp->shmem_length == SHMEM_32K) {
- buf = ((((short) page << 11) & 0x7800) + lp->shmem_base);
- outb((page >> 4), EWRK3_MPR);
- } else if (lp->shmem_length == SHMEM_64K) {
- buf = ((((short) page << 11) & 0xf800) + lp->shmem_base);
- outb((page >> 5), EWRK3_MPR);
- } else {
- status = -1;
- printk(KERN_ERR "%s: Oops - your private data area is hosed!\n", dev->name);
- }
- if (!status) {
- /*
- ** Set up the buffer control structures and copy the data from
- ** the socket buffer to the shared memory .
- */
- if (lp->shmem_length == IO_ONLY) {
- int i;
- u_char *p = skb->data;
- outb((char) (TCR_QMODE | TCR_PAD | TCR_IFC), EWRK3_DATA);
- outb((char) (skb->len & 0xff), EWRK3_DATA);
- outb((char) ((skb->len >> 8) & 0xff), EWRK3_DATA);
- outb((char) 0x04, EWRK3_DATA);
- for (i = 0; i < skb->len; i++) {
- outb(*p++, EWRK3_DATA);
- }
- outb(page, EWRK3_TQ); /* Start sending pkt */
- } else {
- isa_writeb((char) (TCR_QMODE | TCR_PAD | TCR_IFC), buf); /* ctrl byte */
- buf += 1;
- isa_writeb((char) (skb->len & 0xff), buf); /* length (16 bit xfer) */
- buf += 1;
- if (lp->txc) {
- isa_writeb((char) (((skb->len >> 8) & 0xff) | XCT), buf);
- buf += 1;
- isa_writeb(0x04, buf); /* index byte */
- buf += 1;
- isa_writeb(0x00, (buf + skb->len)); /* Write the XCT flag */
- isa_memcpy_toio(buf, skb->data, PRELOAD); /* Write PRELOAD bytes */
- outb(page, EWRK3_TQ); /* Start sending pkt */
- isa_memcpy_toio(buf + PRELOAD, skb->data + PRELOAD, skb->len - PRELOAD);
- isa_writeb(0xff, (buf + skb->len)); /* Write the XCT flag */
- } else {
- isa_writeb((char) ((skb->len >> 8) & 0xff), buf);
- buf += 1;
- isa_writeb(0x04, buf); /* index byte */
- buf += 1;
- isa_memcpy_toio(buf, skb->data, skb->len); /* Write data bytes */
- outb(page, EWRK3_TQ); /* Start sending pkt */
- }
- }
+ /*
+ ** Set up shared memory window and pointer into the window
+ */
+ if (lp->shmem_length == IO_ONLY) {
+ outb (page, EWRK3_IOPR);
+ } else if (lp->shmem_length == SHMEM_2K) {
+ buf = lp->shmem_base;
+ outb (page, EWRK3_MPR);
+ } else if (lp->shmem_length == SHMEM_32K) {
+ buf = ((((short) page << 11) & 0x7800) + lp->shmem_base);
+ outb ((page >> 4), EWRK3_MPR);
+ } else if (lp->shmem_length == SHMEM_64K) {
+ buf = ((((short) page << 11) & 0xf800) + lp->shmem_base);
+ outb ((page >> 5), EWRK3_MPR);
+ } else {
+ printk (KERN_ERR "%s: Oops - your private data area is hosed!\n",
+ dev->name);
+ BUG ();
+ }
- lp->stats.tx_bytes += skb->len;
- dev->trans_start = jiffies;
- dev_kfree_skb(skb);
- } else { /* return unused page to the free memory queue */
- outb(page, EWRK3_FMQ);
- }
- lp->lock = 0; /* unlock the page register */
- } else {
- printk("ewrk3_queue_pkt(): Invalid free memory page (%d).\n",
- (u_char) page);
+ /*
+ ** Set up the buffer control structures and copy the data from
+ ** the socket buffer to the shared memory .
+ */
+ if (lp->shmem_length == IO_ONLY) {
+ int i;
+ u_char *p = skb->data;
+ outb ((char) (TCR_QMODE | TCR_PAD | TCR_IFC), EWRK3_DATA);
+ outb ((char) (skb->len & 0xff), EWRK3_DATA);
+ outb ((char) ((skb->len >> 8) & 0xff), EWRK3_DATA);
+ outb ((char) 0x04, EWRK3_DATA);
+ for (i = 0; i < skb->len; i++) {
+ outb (*p++, EWRK3_DATA);
}
+ outb (page, EWRK3_TQ); /* Start sending pkt */
} else {
- printk(KERN_WARNING "%s: ewrk3_queue_pkt(): No free resources...\n", dev->name);
- printk(KERN_WARNING "%s: ewrk3_queue_pkt(): CSR: %02x ICR: %02x FMQC: %02x\n", dev->name, inb(EWRK3_CSR), inb(EWRK3_ICR), inb(EWRK3_FMQC));
+ isa_writeb ((char) (TCR_QMODE | TCR_PAD | TCR_IFC), buf); /* ctrl byte */
+ buf += 1;
+ isa_writeb ((char) (skb->len & 0xff), buf); /* length (16 bit xfer) */
+ buf += 1;
+ if (lp->txc) {
+ isa_writeb ((char)
+ (((skb->len >> 8) & 0xff) | XCT), buf);
+ buf += 1;
+ isa_writeb (0x04, buf); /* index byte */
+ buf += 1;
+ isa_writeb (0x00, (buf + skb->len)); /* Write the XCT flag */
+ isa_memcpy_toio (buf, skb->data, PRELOAD); /* Write PRELOAD bytes */
+ outb (page, EWRK3_TQ); /* Start sending pkt */
+ isa_memcpy_toio (buf + PRELOAD,
+ skb->data + PRELOAD,
+ skb->len - PRELOAD);
+ isa_writeb (0xff, (buf + skb->len)); /* Write the XCT flag */
+ } else {
+ isa_writeb ((char)
+ ((skb->len >> 8) & 0xff), buf);
+ buf += 1;
+ isa_writeb (0x04, buf); /* index byte */
+ buf += 1;
+ isa_memcpy_toio (buf, skb->data, skb->len); /* Write data bytes */
+ outb (page, EWRK3_TQ); /* Start sending pkt */
+ }
}
- /* Check for free resources: clear 'tbusy' if there are some */
- if (inb(EWRK3_FMQC) > 0) {
- netif_wake_queue(dev);
- }
ENABLE_IRQs;
- return status;
+ spin_unlock_irq (&lp->hw_lock);
+
+ lp->stats.tx_bytes += skb->len;
+ dev->trans_start = jiffies;
+ dev_kfree_skb (skb);
+
+ /* Check for free resources: stop Tx queue if there are none */
+ if (inb (EWRK3_FMQC) == 0)
+ netif_stop_queue (dev);
+
+ return 0;
+
+err_out:
+ ENABLE_IRQs;
+ spin_unlock_irq (&lp->hw_lock);
+ return 1;
}
/*
@@ -886,6 +893,7 @@ static void ewrk3_interrupt(int irq, void *dev_id, struct pt_regs *regs)
/*
** Mask the EWRK3 board interrupts and turn on the LED
*/
+ spin_lock(&lp->hw_lock);
DISABLE_IRQs;
cr = inb(EWRK3_CR);
@@ -917,6 +925,7 @@ static void ewrk3_interrupt(int irq, void *dev_id, struct pt_regs *regs)
cr &= ~CR_LED;
outb(cr, EWRK3_CR);
ENABLE_IRQs;
+ spin_unlock(&lp->hw_lock);
}
static int ewrk3_rx(struct net_device *dev)
@@ -924,23 +933,12 @@ static int ewrk3_rx(struct net_device *dev)
struct ewrk3_private *lp = (struct ewrk3_private *) dev->priv;
u_long iobase = dev->base_addr;
int i, status = 0;
- u_char page, tmpPage = 0, tmpLock = 0;
+ u_char page;
u_long buf = 0;
while (inb(EWRK3_RQC) && !status) { /* Whilst there's incoming data */
if ((page = inb(EWRK3_RQ)) < lp->mPage) { /* Get next entry's buffer page */
/*
- ** Preempt any process using the current page register. Check for
- ** an existing lock to reduce time taken in I/O transactions.
- */
- if ((tmpLock = test_and_set_bit(0, (void *) &lp->lock)) == 1) { /* Assert lock */
- if (lp->shmem_length == IO_ONLY) { /* Get existing page */
- tmpPage = inb(EWRK3_IOPR);
- } else {
- tmpPage = inb(EWRK3_MPR);
- }
- }
- /*
** Set up shared memory window and pointer into the window
*/
if (lp->shmem_length == IO_ONLY) {
@@ -1045,15 +1043,6 @@ static int ewrk3_rx(struct net_device *dev)
** Return the received buffer to the free memory queue
*/
outb(page, EWRK3_FMQ);
-
- if (tmpLock) { /* If a lock was preempted */
- if (lp->shmem_length == IO_ONLY) { /* Replace old page */
- outb(tmpPage, EWRK3_IOPR);
- } else {
- outb(tmpPage, EWRK3_MPR);
- }
- }
- lp->lock = 0; /* Unlock the page register */
} else {
printk("ewrk3_rx(): Illegal page number, page %d\n", page);
printk("ewrk3_rx(): CSR: %02x ICR: %02x FMQC: %02x\n", inb(EWRK3_CSR), inb(EWRK3_ICR), inb(EWRK3_FMQC));
@@ -1191,7 +1180,7 @@ static void SetMulticastFilter(struct net_device *dev)
u16 hashcode;
s32 crc, poly = CRC_POLYNOMIAL_LE;
- while (test_and_set_bit(0, (void *) &lp->lock) != 0); /* Wait for lock to free */
+ spin_lock_irq(&lp->hw_lock);
if (lp->shmem_length == IO_ONLY) {
outb(0, EWRK3_IOPR);
@@ -1258,9 +1247,7 @@ static void SetMulticastFilter(struct net_device *dev)
}
}
- lp->lock = 0; /* Unlock the page register */
-
- return;
+ spin_unlock_irq(&lp->hw_lock);
}
/*
@@ -1710,24 +1697,22 @@ static int ewrk3_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
break;
case EWRK3_GET_MCA: /* Get the multicast address table */
- while (test_and_set_bit(0, (void *) &lp->lock) != 0); /* Wait for lock to free */
- if (lp->shmem_length == IO_ONLY) {
- outb(0, EWRK3_IOPR);
- outw(PAGE0_HTE, EWRK3_PIR1);
- for (i = 0; i < (HASH_TABLE_LEN >> 3); i++) {
- tmp.addr[i] = inb(EWRK3_DATA);
- }
- } else {
- outb(0, EWRK3_MPR);
- isa_memcpy_fromio(tmp.addr, lp->shmem_base + PAGE0_HTE, (HASH_TABLE_LEN >> 3));
- }
- ioc->len = (HASH_TABLE_LEN >> 3);
- if (copy_to_user(ioc->data, tmp.addr, ioc->len)) {
- status = -EFAULT;
- break;
+ spin_lock_irq(&lp->hw_lock);
+ if (lp->shmem_length == IO_ONLY) {
+ outb(0, EWRK3_IOPR);
+ outw(PAGE0_HTE, EWRK3_PIR1);
+ for (i = 0; i < (HASH_TABLE_LEN >> 3); i++) {
+ tmp.addr[i] = inb(EWRK3_DATA);
}
+ } else {
+ outb(0, EWRK3_MPR);
+ isa_memcpy_fromio(tmp.addr, lp->shmem_base + PAGE0_HTE, (HASH_TABLE_LEN >> 3));
+ }
+ spin_unlock_irq(&lp->hw_lock);
- lp->lock = 0; /* Unlock the page register */
+ ioc->len = (HASH_TABLE_LEN >> 3);
+ if (copy_to_user(ioc->data, tmp.addr, ioc->len))
+ status = -EFAULT;
break;
case EWRK3_SET_MCA: /* Set a multicast address */
diff --git a/drivers/net/ne2.c b/drivers/net/ne2.c
index 9bb252dc5c5b..f9873570a80d 100644
--- a/drivers/net/ne2.c
+++ b/drivers/net/ne2.c
@@ -4,7 +4,7 @@
modified by Wim Dumon (Apr 1996)
This software may be used and distributed according to the terms
- of the GNU Public License, incorporated herein by reference.
+ of the GNU General Public License, incorporated herein by reference.
The author may be reached as wimpie@linux.cc.kuleuven.ac.be
@@ -45,6 +45,9 @@
Mon Nov 16 15:28:23 CET 1998 (Wim Dumon)
- pass 'dev' as last parameter of request_irq in stead of 'NULL'
+
+ Wed Feb 7 21:24:00 CET 2001 (Alfred Arnold)
+ - added support for the D-Link DE-320CT
* WARNING
-------
@@ -67,7 +70,7 @@ static const char *version = "ne2.c:v0.91 Nov 16 1998 Wim Dumon <wimpie@kotnet.o
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/in.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <asm/system.h>
#include <asm/bitops.h>
@@ -114,6 +117,11 @@ static unsigned int addresses[7] __initdata =
{0x1000, 0x2020, 0x8020, 0xa0a0, 0xb0b0, 0xc0c0, 0xc3d0};
static int irqs[4] __initdata = {3, 4, 5, 9};
+/* From the D-Link ADF file: */
+static unsigned int dlink_addresses[4]=
+ {0x300, 0x320, 0x340, 0x360};
+static int dlink_irqs[8] = {3, 4, 5, 9, 10, 11, 14, 15};
+
struct ne2_adapters_t {
unsigned int id;
char *name;
@@ -123,6 +131,7 @@ static struct ne2_adapters_t ne2_adapters[] __initdata = {
{ 0x6354, "Arco Ethernet Adapter AE/2" },
{ 0x70DE, "Compex ENET-16 MC/P" },
{ 0x7154, "Novell Ethernet Adapter NE/2" },
+ { 0x56ea, "D-Link DE-320CT" },
{ 0x0000, NULL }
};
@@ -143,6 +152,98 @@ static void ne_block_output(struct net_device *dev, const int count,
/*
+ * special code to read the DE-320's MAC address EEPROM. In contrast to a
+ * standard NE design, this is a serial EEPROM (93C46) that has to be read
+ * bit by bit. The EEPROM cotrol port at base + 0x1e has the following
+ * layout:
+ *
+ * Bit 0 = Data out (read from EEPROM)
+ * Bit 1 = Data in (write to EEPROM)
+ * Bit 2 = Clock
+ * Bit 3 = Chip Select
+ * Bit 7 = ~50 kHz clock for defined delays
+ *
+ */
+
+static void dlink_put_eeprom(unsigned char value, unsigned int addr)
+{
+ int z;
+ unsigned char v1, v2;
+
+ /* write the value to the NIC EEPROM register */
+
+ outb(value, addr + 0x1e);
+
+ /* now wait the clock line to toggle twice. Effectively, we are
+ waiting (at least) for one clock cycle */
+
+ for (z = 0; z < 2; z++) {
+ do {
+ v1 = inb(addr + 0x1e);
+ v2 = inb(addr + 0x1e);
+ }
+ while (!((v1 ^ v2) & 0x80));
+ }
+}
+
+static void dlink_send_eeprom_bit(unsigned int bit, unsigned int addr)
+{
+ /* shift data bit into correct position */
+
+ bit = bit << 1;
+
+ /* write value, keep clock line high for two cycles */
+
+ dlink_put_eeprom(0x09 | bit, addr);
+ dlink_put_eeprom(0x0d | bit, addr);
+ dlink_put_eeprom(0x0d | bit, addr);
+ dlink_put_eeprom(0x09 | bit, addr);
+}
+
+static void dlink_send_eeprom_word(unsigned int value, unsigned int len, unsigned int addr)
+{
+ int z;
+
+ /* adjust bits so that they are left-aligned in a 16-bit-word */
+
+ value = value << (16 - len);
+
+ /* shift bits out to the EEPROM */
+
+ for (z = 0; z < len; z++) {
+ dlink_send_eeprom_bit((value & 0x8000) >> 15, addr);
+ value = value << 1;
+ }
+}
+
+static unsigned int dlink_get_eeprom(unsigned int eeaddr, unsigned int addr)
+{
+ int z;
+ unsigned int value = 0;
+
+ /* pull the CS line low for a moment. This resets the EEPROM-
+ internal logic, and makes it ready for a new command. */
+
+ dlink_put_eeprom(0x01, addr);
+ dlink_put_eeprom(0x09, addr);
+
+ /* send one start bit, read command (1 - 0), plus the address to
+ the EEPROM */
+
+ dlink_send_eeprom_word(0x0180 | (eeaddr & 0x3f), 9, addr);
+
+ /* get the data word. We clock by sending 0s to the EEPROM, which
+ get ignored during the read process */
+
+ for (z = 0; z < 16; z++) {
+ dlink_send_eeprom_bit(0, addr);
+ value = (value << 1) | (inb(addr + 0x1e) & 0x01);
+ }
+
+ return value;
+}
+
+/*
* Note that at boot, this probe only picks up one card at a time.
*/
@@ -221,12 +322,20 @@ static int __init ne2_probe1(struct net_device *dev, int slot)
return -ENODEV;
}
- i = (POS & 0xE)>>1;
- /* printk("Halleluja sdog, als er na de pijl een 1 staat is 1 - 1 == 0"
- " en zou het moeten werken -> %d\n", i);
- The above line was for remote testing, thanx to sdog ... */
- base_addr = addresses[i - 1];
- irq = irqs[(POS & 0x60)>>5];
+ /* handle different POS register structure for D-Link card */
+
+ if (mca_read_stored_pos(slot, 0) == 0xea) {
+ base_addr = dlink_addresses[(POS >> 5) & 0x03];
+ irq = dlink_irqs[(POS >> 2) & 0x07];
+ }
+ else {
+ i = (POS & 0xE)>>1;
+ /* printk("Halleluja sdog, als er na de pijl een 1 staat is 1 - 1 == 0"
+ " en zou het moeten werken -> %d\n", i);
+ The above line was for remote testing, thanx to sdog ... */
+ base_addr = addresses[i - 1];
+ irq = irqs[(POS & 0x60)>>5];
+ }
if (!request_region(base_addr, NE_IO_EXTENT, dev->name))
return -EBUSY;
@@ -309,6 +418,20 @@ static int __init ne2_probe1(struct net_device *dev, int slot)
SA_prom[i] = inb(base_addr + NE_DATAPORT);
}
+ /* I don't know whether the previous sequence includes the general
+ board reset procedure, so better don't omit it and just overwrite
+ the garbage read from a DE-320 with correct stuff. */
+
+ if (mca_read_stored_pos(slot, 0) == 0xea) {
+ unsigned int v;
+
+ for (i = 0; i < 3; i++) {
+ v = dlink_get_eeprom(i, base_addr);
+ SA_prom[(i << 1) ] = v & 0xff;
+ SA_prom[(i << 1) + 1] = (v >> 8) & 0xff;
+ }
+ }
+
start_page = NESM_START_PG;
stop_page = NESM_STOP_PG;
diff --git a/drivers/parport/init.c b/drivers/parport/init.c
index 90280e37176c..c7efbe5f4f32 100644
--- a/drivers/parport/init.c
+++ b/drivers/parport/init.c
@@ -15,7 +15,7 @@
#include <linux/parport.h>
#include <linux/errno.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#ifndef MODULE
diff --git a/drivers/parport/parport_arc.c b/drivers/parport/parport_arc.c
index 69509dc63058..0da0e6a23d20 100644
--- a/drivers/parport/parport_arc.c
+++ b/drivers/parport/parport_arc.c
@@ -20,7 +20,7 @@
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/parport.h>
#include <asm/ptrace.h>
diff --git a/drivers/parport/parport_gsc.c b/drivers/parport/parport_gsc.c
index 155f8be56254..6210a524ddc4 100644
--- a/drivers/parport/parport_gsc.c
+++ b/drivers/parport/parport_gsc.c
@@ -27,7 +27,7 @@
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pci.h>
#include <linux/sysctl.h>
diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c
index 3f8dff08879a..2bd9e7e76cb3 100644
--- a/drivers/parport/parport_pc.c
+++ b/drivers/parport/parport_pc.c
@@ -48,7 +48,7 @@
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pci.h>
#include <linux/sysctl.h>
diff --git a/drivers/parport/parport_sunbpp.c b/drivers/parport/parport_sunbpp.c
index 6cafbc11a289..8ca85ad2bbb8 100644
--- a/drivers/parport/parport_sunbpp.c
+++ b/drivers/parport/parport_sunbpp.c
@@ -22,7 +22,7 @@
#include <linux/errno.h>
#include <linux/ioport.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/parport.h>
diff --git a/drivers/parport/procfs.c b/drivers/parport/procfs.c
index b82b4e2f255b..ee37ca229d64 100644
--- a/drivers/parport/procfs.c
+++ b/drivers/parport/procfs.c
@@ -16,7 +16,7 @@
#include <linux/config.h>
#include <linux/errno.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/parport.h>
#include <linux/ctype.h>
#include <linux/sysctl.h>
diff --git a/drivers/parport/share.c b/drivers/parport/share.c
index ec167ece19dc..03c0f5c0716c 100644
--- a/drivers/parport/share.c
+++ b/drivers/parport/share.c
@@ -26,7 +26,7 @@
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/kmod.h>
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index a6dc39f437ae..eff8fb3a2415 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -16,7 +16,7 @@
#include <linux/pci.h>
#include <linux/string.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/spinlock.h>
#include <linux/pm.h>
diff --git a/drivers/pcmcia/bulkmem.c b/drivers/pcmcia/bulkmem.c
index 232ab5ea551c..681102c9293e 100644
--- a/drivers/pcmcia/bulkmem.c
+++ b/drivers/pcmcia/bulkmem.c
@@ -37,7 +37,7 @@
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/timer.h>
diff --git a/drivers/pcmcia/cardbus.c b/drivers/pcmcia/cardbus.c
index 3a83b10c8dc0..642ea9d269ae 100644
--- a/drivers/pcmcia/cardbus.c
+++ b/drivers/pcmcia/cardbus.c
@@ -51,7 +51,7 @@
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/pci.h>
#include <linux/ioport.h>
diff --git a/drivers/pcmcia/cb_enabler.c b/drivers/pcmcia/cb_enabler.c
index a4d81a65e2ea..5faf3e40814d 100644
--- a/drivers/pcmcia/cb_enabler.c
+++ b/drivers/pcmcia/cb_enabler.c
@@ -43,7 +43,7 @@
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/timer.h>
diff --git a/drivers/pcmcia/cistpl.c b/drivers/pcmcia/cistpl.c
index a177ca207953..703d030258c0 100644
--- a/drivers/pcmcia/cistpl.c
+++ b/drivers/pcmcia/cistpl.c
@@ -40,7 +40,7 @@
#include <linux/major.h>
#include <linux/errno.h>
#include <linux/timer.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/pci.h>
diff --git a/drivers/pcmcia/cs.c b/drivers/pcmcia/cs.c
index 331c1b192af7..4361866f21ea 100644
--- a/drivers/pcmcia/cs.c
+++ b/drivers/pcmcia/cs.c
@@ -38,7 +38,7 @@
#include <linux/string.h>
#include <linux/major.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/timer.h>
diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c
index 288f4b76ee17..0bc8efe007ed 100644
--- a/drivers/pcmcia/ds.c
+++ b/drivers/pcmcia/ds.c
@@ -38,7 +38,7 @@
#include <linux/major.h>
#include <linux/string.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/fcntl.h>
#include <linux/sched.h>
diff --git a/drivers/pcmcia/i82365.c b/drivers/pcmcia/i82365.c
index b09e1182fff3..7326b6329872 100644
--- a/drivers/pcmcia/i82365.c
+++ b/drivers/pcmcia/i82365.c
@@ -41,7 +41,7 @@
#include <linux/errno.h>
#include <linux/timer.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pci.h>
#include <linux/ioport.h>
#include <linux/delay.h>
diff --git a/drivers/pcmcia/rsrc_mgr.c b/drivers/pcmcia/rsrc_mgr.c
index 4e06af9c519c..02f605cc1d98 100644
--- a/drivers/pcmcia/rsrc_mgr.c
+++ b/drivers/pcmcia/rsrc_mgr.c
@@ -40,7 +40,7 @@
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/types.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/timer.h>
#include <asm/irq.h>
diff --git a/drivers/pcmcia/tcic.c b/drivers/pcmcia/tcic.c
index a4d43e168543..8c2aedbbf6f4 100644
--- a/drivers/pcmcia/tcic.c
+++ b/drivers/pcmcia/tcic.c
@@ -45,7 +45,7 @@
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/timer.h>
#include <linux/ioport.h>
#include <linux/delay.h>
diff --git a/drivers/pnp/isapnp.c b/drivers/pnp/isapnp.c
index 7256544ff54c..e2fc2de63381 100644
--- a/drivers/pnp/isapnp.c
+++ b/drivers/pnp/isapnp.c
@@ -31,7 +31,7 @@
#include <linux/errno.h>
#include <linux/ioport.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <asm/io.h>
#include <asm/dma.h>
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index a48213aea270..7ef7904ba228 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -17,7 +17,7 @@
#include <linux/tqueue.h>
#include <linux/timer.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/genhd.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/hdreg.h>
diff --git a/drivers/s390/block/dasd_ccwstuff.c b/drivers/s390/block/dasd_ccwstuff.c
index 4f666da284e1..024eb0997e1e 100644
--- a/drivers/s390/block/dasd_ccwstuff.c
+++ b/drivers/s390/block/dasd_ccwstuff.c
@@ -7,7 +7,7 @@
#include <linux/stddef.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/dasd.h>
#include <asm/atomic.h>
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c
index 30e41f8157c3..2e7cbb15c57f 100644
--- a/drivers/s390/block/dasd_eckd.c
+++ b/drivers/s390/block/dasd_eckd.c
@@ -12,7 +12,7 @@
#include <linux/module.h>
#endif /* MODULE */
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/dasd.h>
#include <asm/io.h>
diff --git a/drivers/s390/block/mdisk.c b/drivers/s390/block/mdisk.c
index f485cb668f82..b5ceef46aeb0 100644
--- a/drivers/s390/block/mdisk.c
+++ b/drivers/s390/block/mdisk.c
@@ -21,7 +21,7 @@ char kernel_version [] = UTS_RELEASE;
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/kernel.h> /* printk() */
-#include <linux/malloc.h> /* kmalloc() */
+#include <linux/slab.h> /* kmalloc() */
#include <linux/vmalloc.h> /* vmalloc() */
#include <linux/fs.h> /* everything... */
#include <linux/errno.h> /* error codes */
diff --git a/drivers/s390/char/con3215.c b/drivers/s390/char/con3215.c
index 10a43856c213..ee48a889e506 100644
--- a/drivers/s390/char/con3215.c
+++ b/drivers/s390/char/con3215.c
@@ -16,7 +16,7 @@
#include <linux/console.h>
#include <linux/interrupt.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/bootmem.h>
#include <asm/io.h>
#include <asm/ebcdic.h>
diff --git a/drivers/s390/net/ctc.c b/drivers/s390/net/ctc.c
index 699eaba377dd..9bb011d4766b 100644
--- a/drivers/s390/net/ctc.c
+++ b/drivers/s390/net/ctc.c
@@ -46,7 +46,7 @@
#include <linux/version.h>
#include <linux/init.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
#include <linux/types.h>
#include <linux/interrupt.h>
diff --git a/drivers/s390/net/iucv.c b/drivers/s390/net/iucv.c
index b8b365753d93..8bf00246d8ff 100644
--- a/drivers/s390/net/iucv.c
+++ b/drivers/s390/net/iucv.c
@@ -20,7 +20,7 @@
#include <linux/version.h>
#include <linux/sched.h>
#include <linux/kernel.h> /* printk() */
-#include <linux/malloc.h> /* kmalloc() */
+#include <linux/slab.h> /* kmalloc() */
#include <linux/errno.h> /* error codes */
#include <linux/types.h> /* size_t */
#include <linux/interrupt.h> /* mark_bh */
diff --git a/drivers/sbus/audio/amd7930.c b/drivers/sbus/audio/amd7930.c
index 1ddfb5017cb0..0565189fd1cf 100644
--- a/drivers/sbus/audio/amd7930.c
+++ b/drivers/sbus/audio/amd7930.c
@@ -88,7 +88,7 @@
#include <linux/sched.h>
#include <linux/errno.h>
#include <linux/interrupt.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/version.h>
#include <linux/soundcard.h>
diff --git a/drivers/sbus/audio/audio.c b/drivers/sbus/audio/audio.c
index 5062a4300b0c..0c323700fc32 100644
--- a/drivers/sbus/audio/audio.c
+++ b/drivers/sbus/audio/audio.c
@@ -1,4 +1,4 @@
-/* $Id: audio.c,v 1.56 2000/10/19 00:50:02 davem Exp $
+/* $Id: audio.c,v 1.57 2001/02/02 08:36:55 davem Exp $
* drivers/sbus/audio/audio.c
*
* Copyright 1996 Thomas K. Dyas (tdyas@noc.rutgers.edu)
@@ -28,13 +28,13 @@
#include <linux/mm.h>
#include <linux/tqueue.h>
#include <linux/major.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/init.h>
#include <linux/soundcard.h>
#include <linux/version.h>
#include <linux/devfs_fs_kernel.h>
-#include <asm/delay.h>
+#include <linux/delay.h>
#include <asm/pgtable.h>
#include <asm/audioio.h>
@@ -511,7 +511,7 @@ static int sparcaudio_mixer_ioctl(struct inode * inode, struct file * file,
m = drv->ops->get_input_balance(drv);
i = OSS_TO_GAIN(k);
j = OSS_TO_BAL(k);
- oprintk((" for stereo to to %d (bal %d):", i, j));
+ oprintk((" for stereo to do %d (bal %d):", i, j));
if (drv->ops->set_input_volume)
drv->ops->set_input_volume(drv, i);
if (drv->ops->set_input_balance)
diff --git a/drivers/sbus/audio/cs4231.c b/drivers/sbus/audio/cs4231.c
index e155a73b47fd..af898c943012 100644
--- a/drivers/sbus/audio/cs4231.c
+++ b/drivers/sbus/audio/cs4231.c
@@ -22,7 +22,7 @@
#include <linux/sched.h>
#include <linux/errno.h>
#include <linux/interrupt.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/soundcard.h>
diff --git a/drivers/sbus/audio/dbri.c b/drivers/sbus/audio/dbri.c
index 665bb4b31812..219c2f20fb47 100644
--- a/drivers/sbus/audio/dbri.c
+++ b/drivers/sbus/audio/dbri.c
@@ -1,4 +1,4 @@
-/* $Id: dbri.c,v 1.23 2001/01/08 04:19:16 davem Exp $
+/* $Id: dbri.c,v 1.24 2001/02/02 08:36:55 davem Exp $
* drivers/sbus/audio/dbri.c
*
* Copyright (C) 1997 Rudolf Koenig (rfkoenig@immd4.informatik.uni-erlangen.de)
@@ -47,14 +47,14 @@
#include <linux/sched.h>
#include <linux/errno.h>
#include <linux/interrupt.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/version.h>
+#include <linux/delay.h>
#include <asm/openprom.h>
#include <asm/oplib.h>
#include <asm/system.h>
#include <asm/irq.h>
#include <asm/io.h>
-#include <asm/delay.h>
#include <asm/sbus.h>
#include <asm/pgtable.h>
diff --git a/drivers/sbus/audio/dmy.c b/drivers/sbus/audio/dmy.c
index 39753774d480..1ba353a4579f 100644
--- a/drivers/sbus/audio/dmy.c
+++ b/drivers/sbus/audio/dmy.c
@@ -13,7 +13,7 @@
#include <linux/sched.h>
#include <linux/errno.h>
#include <linux/interrupt.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/soundcard.h>
#include <linux/delay.h>
diff --git a/drivers/sbus/char/envctrl.c b/drivers/sbus/char/envctrl.c
index e1de7a680baa..63bc05487e4b 100644
--- a/drivers/sbus/char/envctrl.c
+++ b/drivers/sbus/char/envctrl.c
@@ -25,7 +25,7 @@
#include <linux/init.h>
#include <linux/miscdevice.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/ebus.h>
#include <asm/uaccess.h>
diff --git a/drivers/sbus/char/flash.c b/drivers/sbus/char/flash.c
index c6c927712c93..139e0ae11788 100644
--- a/drivers/sbus/char/flash.c
+++ b/drivers/sbus/char/flash.c
@@ -9,7 +9,7 @@
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/miscdevice.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
#include <linux/poll.h>
#include <linux/init.h>
diff --git a/drivers/sbus/char/jsflash.c b/drivers/sbus/char/jsflash.c
index 8faec19dd9d9..21e1a7552c34 100644
--- a/drivers/sbus/char/jsflash.c
+++ b/drivers/sbus/char/jsflash.c
@@ -30,7 +30,7 @@
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/miscdevice.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
#include <linux/poll.h>
#include <linux/init.h>
diff --git a/drivers/sbus/char/openprom.c b/drivers/sbus/char/openprom.c
index f565ef6d2abe..fdad6236e5ce 100644
--- a/drivers/sbus/char/openprom.c
+++ b/drivers/sbus/char/openprom.c
@@ -36,7 +36,7 @@
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/miscdevice.h>
#include <linux/init.h>
diff --git a/drivers/sbus/char/pcikbd.c b/drivers/sbus/char/pcikbd.c
index ea37949fad0b..40d2836398c0 100644
--- a/drivers/sbus/char/pcikbd.c
+++ b/drivers/sbus/char/pcikbd.c
@@ -16,7 +16,7 @@
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/poll.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
#include <linux/random.h>
#include <linux/miscdevice.h>
diff --git a/drivers/sbus/char/rtc.c b/drivers/sbus/char/rtc.c
index 6105e42290fc..962441de11f7 100644
--- a/drivers/sbus/char/rtc.c
+++ b/drivers/sbus/char/rtc.c
@@ -15,7 +15,7 @@
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/miscdevice.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
#include <linux/poll.h>
#include <linux/init.h>
diff --git a/drivers/sbus/char/sab82532.c b/drivers/sbus/char/sab82532.c
index 5de83158b295..d910cd1b65b1 100644
--- a/drivers/sbus/char/sab82532.c
+++ b/drivers/sbus/char/sab82532.c
@@ -24,7 +24,7 @@
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/delay.h>
diff --git a/drivers/sbus/char/su.c b/drivers/sbus/char/su.c
index bb256e46ed3b..9600cfb0b6b8 100644
--- a/drivers/sbus/char/su.c
+++ b/drivers/sbus/char/su.c
@@ -61,7 +61,7 @@ do { \
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/bootmem.h>
#include <linux/delay.h>
diff --git a/drivers/sbus/char/uctrl.c b/drivers/sbus/char/uctrl.c
index 2740c62f31d8..5a3c50f66f6c 100644
--- a/drivers/sbus/char/uctrl.c
+++ b/drivers/sbus/char/uctrl.c
@@ -9,7 +9,7 @@
#include <linux/errno.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/init.h>
#include <linux/miscdevice.h>
diff --git a/drivers/sbus/char/vfc_dev.c b/drivers/sbus/char/vfc_dev.c
index a4c0f347ec3f..c395c018aefc 100644
--- a/drivers/sbus/char/vfc_dev.c
+++ b/drivers/sbus/char/vfc_dev.c
@@ -17,11 +17,12 @@
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/fs.h>
#include <linux/smp_lock.h>
+#include <linux/delay.h>
#include <linux/spinlock.h>
#include <asm/openprom.h>
@@ -29,7 +30,6 @@
#include <asm/io.h>
#include <asm/system.h>
#include <asm/sbus.h>
-#include <asm/delay.h>
#include <asm/page.h>
#include <asm/pgtable.h>
#include <asm/uaccess.h>
diff --git a/drivers/sbus/char/vfc_i2c.c b/drivers/sbus/char/vfc_i2c.c
index 08577384341b..ae7c42f110b6 100644
--- a/drivers/sbus/char/vfc_i2c.c
+++ b/drivers/sbus/char/vfc_i2c.c
@@ -20,7 +20,7 @@ fairly certain that the flowcharts in the phillips docs are wrong. */
#include <linux/kernel.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/wait.h>
diff --git a/drivers/sbus/dvma.c b/drivers/sbus/dvma.c
index bb522768d7a4..f15a3016e427 100644
--- a/drivers/sbus/dvma.c
+++ b/drivers/sbus/dvma.c
@@ -6,11 +6,11 @@
#include <linux/config.h>
#include <linux/string.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
+#include <linux/delay.h>
#include <asm/oplib.h>
-#include <asm/delay.h>
#include <asm/io.h>
#include <asm/dma.h>
#include <asm/sbus.h>
diff --git a/drivers/sbus/sbus.c b/drivers/sbus/sbus.c
index 032776c7037f..a2a4d75216de 100644
--- a/drivers/sbus/sbus.c
+++ b/drivers/sbus/sbus.c
@@ -5,7 +5,7 @@
*/
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/config.h>
#include <linux/init.h>
#include <linux/pci.h>
diff --git a/drivers/scsi/53c7,8xx.c b/drivers/scsi/53c7,8xx.c
index 15ec102d6046..a84fb6f5fd03 100644
--- a/drivers/scsi/53c7,8xx.c
+++ b/drivers/scsi/53c7,8xx.c
@@ -229,7 +229,7 @@
#include <linux/pci.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/mm.h>
#include <linux/ioport.h>
diff --git a/drivers/scsi/53c7xx.c b/drivers/scsi/53c7xx.c
index 2ee80ae09b03..d47fc8ac967f 100644
--- a/drivers/scsi/53c7xx.c
+++ b/drivers/scsi/53c7xx.c
@@ -246,7 +246,7 @@
#include <linux/sched.h>
#include <linux/errno.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/mm.h>
#include <linux/ioport.h>
diff --git a/drivers/scsi/NCR53C9x.c b/drivers/scsi/NCR53C9x.c
index 0340ab5c44b8..5cf00e3ee02c 100644
--- a/drivers/scsi/NCR53C9x.c
+++ b/drivers/scsi/NCR53C9x.c
@@ -30,7 +30,7 @@
#include <linux/delay.h>
#include <linux/types.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c
index 69fec6b1499c..5f95838c4a8a 100644
--- a/drivers/scsi/advansys.c
+++ b/drivers/scsi/advansys.c
@@ -763,7 +763,7 @@
#include <linux/types.h>
#include <linux/ioport.h>
#include <linux/delay.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#if LINUX_VERSION_CODE >= ASC_LINUX_VERSION(1,3,0)
#include <linux/proc_fs.h>
diff --git a/drivers/scsi/aic7xxx.c b/drivers/scsi/aic7xxx.c
index 8bb8cd96d99c..f8f8fcd64a88 100644
--- a/drivers/scsi/aic7xxx.c
+++ b/drivers/scsi/aic7xxx.c
@@ -256,7 +256,7 @@
#include <scsi/scsicam.h>
#include <linux/stat.h>
-#include <linux/malloc.h> /* for kmalloc() */
+#include <linux/slab.h> /* for kmalloc() */
#include <linux/config.h> /* for CONFIG_PCI */
diff --git a/drivers/scsi/blz1230.c b/drivers/scsi/blz1230.c
index 6872d7ca66bd..d7c13f7c1076 100644
--- a/drivers/scsi/blz1230.c
+++ b/drivers/scsi/blz1230.c
@@ -21,7 +21,7 @@
#include <linux/delay.h>
#include <linux/types.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/blz2060.c b/drivers/scsi/blz2060.c
index 77e3e4f116bd..12efb2891c91 100644
--- a/drivers/scsi/blz2060.c
+++ b/drivers/scsi/blz2060.c
@@ -21,7 +21,7 @@
#include <linux/delay.h>
#include <linux/types.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/cpqfcTScontrol.c b/drivers/scsi/cpqfcTScontrol.c
index bc90b51c3802..091deaf397b1 100644
--- a/drivers/scsi/cpqfcTScontrol.c
+++ b/drivers/scsi/cpqfcTScontrol.c
@@ -35,7 +35,7 @@
#include <linux/string.h>
#include <linux/ioport.h> // request_region() prototype
#include <linux/sched.h>
-#include <linux/malloc.h> // need "kfree" for ext. S/G pages
+#include <linux/slab.h> // need "kfree" for ext. S/G pages
#include <linux/types.h>
#include <linux/pci.h>
#include <linux/delay.h>
diff --git a/drivers/scsi/cpqfcTSinit.c b/drivers/scsi/cpqfcTSinit.c
index dac6954235b1..2d7ec816a7e3 100644
--- a/drivers/scsi/cpqfcTSinit.c
+++ b/drivers/scsi/cpqfcTSinit.c
@@ -1686,7 +1686,7 @@ int cpqfcTSGetLPSM( PTACHYON fcChip, char cErrorString[])
-#include "linux/malloc.h"
+#include "linux/slab.h"
// Dynamic memory allocation alignment routines
// HP's Tachyon Fibre Channel Controller chips require
diff --git a/drivers/scsi/cpqfcTSworker.c b/drivers/scsi/cpqfcTSworker.c
index d3416ab6d7df..286cb0aeb013 100644
--- a/drivers/scsi/cpqfcTSworker.c
+++ b/drivers/scsi/cpqfcTSworker.c
@@ -22,7 +22,7 @@
#include <linux/sched.h>
#include <linux/timer.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/kernel.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/cyberstorm.c b/drivers/scsi/cyberstorm.c
index 33150121c8ae..042b61d4734b 100644
--- a/drivers/scsi/cyberstorm.c
+++ b/drivers/scsi/cyberstorm.c
@@ -24,7 +24,7 @@
#include <linux/delay.h>
#include <linux/types.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/cyberstormII.c b/drivers/scsi/cyberstormII.c
index a1d53b314bc4..90e894f9878a 100644
--- a/drivers/scsi/cyberstormII.c
+++ b/drivers/scsi/cyberstormII.c
@@ -20,7 +20,7 @@
#include <linux/delay.h>
#include <linux/types.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/dec_esp.c b/drivers/scsi/dec_esp.c
index 25c3cad17346..97b140e8486d 100644
--- a/drivers/scsi/dec_esp.c
+++ b/drivers/scsi/dec_esp.c
@@ -15,7 +15,7 @@
#include <linux/delay.h>
#include <linux/types.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/eata_dma.c b/drivers/scsi/eata_dma.c
index 3431655d222e..3d587edce3f1 100644
--- a/drivers/scsi/eata_dma.c
+++ b/drivers/scsi/eata_dma.c
@@ -68,7 +68,7 @@
#include <linux/sched.h>
#include <linux/string.h>
#include <linux/ioport.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/in.h>
#include <linux/pci.h>
#include <linux/proc_fs.h>
diff --git a/drivers/scsi/eata_pio.c b/drivers/scsi/eata_pio.c
index 0d890817cc2f..ce5b3800106e 100644
--- a/drivers/scsi/eata_pio.c
+++ b/drivers/scsi/eata_pio.c
@@ -43,7 +43,7 @@
#include <linux/sched.h>
#include <linux/string.h>
#include <linux/ioport.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/in.h>
#include <linux/pci.h>
#include <linux/proc_fs.h>
diff --git a/drivers/scsi/esp.c b/drivers/scsi/esp.c
index 828c9e2903cb..655d46ad49b4 100644
--- a/drivers/scsi/esp.c
+++ b/drivers/scsi/esp.c
@@ -18,7 +18,7 @@
#include <linux/delay.h>
#include <linux/types.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/fastlane.c b/drivers/scsi/fastlane.c
index bb7f89990beb..90d6555b0a03 100644
--- a/drivers/scsi/fastlane.c
+++ b/drivers/scsi/fastlane.c
@@ -29,7 +29,7 @@
#include <linux/delay.h>
#include <linux/types.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/fcal.c b/drivers/scsi/fcal.c
index 4ffef85617ad..36b017206932 100644
--- a/drivers/scsi/fcal.c
+++ b/drivers/scsi/fcal.c
@@ -8,7 +8,7 @@
#include <linux/delay.h>
#include <linux/types.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/ide-scsi.c b/drivers/scsi/ide-scsi.c
index 5d403105525d..444682a7a0fd 100644
--- a/drivers/scsi/ide-scsi.c
+++ b/drivers/scsi/ide-scsi.c
@@ -40,7 +40,7 @@
#include <linux/blkdev.h>
#include <linux/errno.h>
#include <linux/hdreg.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ide.h>
#include <asm/io.h>
diff --git a/drivers/scsi/ini9100u.c b/drivers/scsi/ini9100u.c
index 4dc0717c7e14..a6744560f181 100644
--- a/drivers/scsi/ini9100u.c
+++ b/drivers/scsi/ini9100u.c
@@ -136,7 +136,7 @@
#include "scsi.h"
#include "sd.h"
#include "hosts.h"
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include "ini9100u.h"
#ifdef DEBUG_i91u
diff --git a/drivers/scsi/inia100.c b/drivers/scsi/inia100.c
index 3adcc43cec4c..acd6081f26e6 100644
--- a/drivers/scsi/inia100.c
+++ b/drivers/scsi/inia100.c
@@ -89,7 +89,7 @@
#include "scsi.h"
#include "sd.h"
#include "hosts.h"
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include "inia100.h"
static Scsi_Host_Template driver_template = INIA100;
diff --git a/drivers/scsi/ips.c b/drivers/scsi/ips.c
index d98c57686479..173ef8498873 100644
--- a/drivers/scsi/ips.c
+++ b/drivers/scsi/ips.c
@@ -123,7 +123,7 @@
#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/ioport.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/sched.h>
diff --git a/drivers/scsi/jazz_esp.c b/drivers/scsi/jazz_esp.c
index 769a25b7d14d..8711c33f3e7d 100644
--- a/drivers/scsi/jazz_esp.c
+++ b/drivers/scsi/jazz_esp.c
@@ -10,7 +10,7 @@
#include <linux/delay.h>
#include <linux/types.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/mac53c94.c b/drivers/scsi/mac53c94.c
index ba29e33d8f2b..d57ce9d6814a 100644
--- a/drivers/scsi/mac53c94.c
+++ b/drivers/scsi/mac53c94.c
@@ -11,7 +11,7 @@
#include <linux/delay.h>
#include <linux/types.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/mac_esp.c b/drivers/scsi/mac_esp.c
index e96802127564..d1d38ec30cb2 100644
--- a/drivers/scsi/mac_esp.c
+++ b/drivers/scsi/mac_esp.c
@@ -18,7 +18,7 @@
#include <linux/types.h>
#include <linux/ctype.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/mca_53c9x.c b/drivers/scsi/mca_53c9x.c
index 6267a6189450..6d2ace9d76bc 100644
--- a/drivers/scsi/mca_53c9x.c
+++ b/drivers/scsi/mca_53c9x.c
@@ -34,7 +34,7 @@
#include <linux/delay.h>
#include <linux/types.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/mesh.c b/drivers/scsi/mesh.c
index f80a7c4972bd..a1afb8e1cb73 100644
--- a/drivers/scsi/mesh.c
+++ b/drivers/scsi/mesh.c
@@ -12,7 +12,7 @@
#include <linux/delay.h>
#include <linux/types.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/ncr53c8xx.c b/drivers/scsi/ncr53c8xx.c
index 3f8854aafeb4..d1f5bd1ad185 100644
--- a/drivers/scsi/ncr53c8xx.c
+++ b/drivers/scsi/ncr53c8xx.c
@@ -136,7 +136,7 @@
#include <linux/errno.h>
#include <linux/pci.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/ioport.h>
#include <linux/time.h>
diff --git a/drivers/scsi/oktagon_esp.c b/drivers/scsi/oktagon_esp.c
index 976a67dc692a..bdd779293034 100644
--- a/drivers/scsi/oktagon_esp.c
+++ b/drivers/scsi/oktagon_esp.c
@@ -19,7 +19,7 @@
#include <linux/delay.h>
#include <linux/types.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/pci2220i.c b/drivers/scsi/pci2220i.c
index 2b6d3122d2f3..50865ceadb45 100644
--- a/drivers/scsi/pci2220i.c
+++ b/drivers/scsi/pci2220i.c
@@ -40,7 +40,7 @@
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pci.h>
#include <linux/ioport.h>
#include <linux/delay.h>
diff --git a/drivers/scsi/pcmcia/aha152x_stub.c b/drivers/scsi/pcmcia/aha152x_stub.c
index 75914a1a216d..2dad6515b4ba 100644
--- a/drivers/scsi/pcmcia/aha152x_stub.c
+++ b/drivers/scsi/pcmcia/aha152x_stub.c
@@ -38,7 +38,7 @@
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/timer.h>
#include <linux/ioport.h>
diff --git a/drivers/scsi/pcmcia/apa1480_stub.c b/drivers/scsi/pcmcia/apa1480_stub.c
index 24ee469cdc2a..5ac3cf79f9c6 100644
--- a/drivers/scsi/pcmcia/apa1480_stub.c
+++ b/drivers/scsi/pcmcia/apa1480_stub.c
@@ -35,7 +35,7 @@
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/timer.h>
#include <linux/ioport.h>
diff --git a/drivers/scsi/pcmcia/fdomain_stub.c b/drivers/scsi/pcmcia/fdomain_stub.c
index 3c480a3ca06b..c15aa191f23b 100644
--- a/drivers/scsi/pcmcia/fdomain_stub.c
+++ b/drivers/scsi/pcmcia/fdomain_stub.c
@@ -35,7 +35,7 @@
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/timer.h>
#include <linux/ioport.h>
diff --git a/drivers/scsi/pcmcia/qlogic_stub.c b/drivers/scsi/pcmcia/qlogic_stub.c
index 1cfee657fea4..c1f41e2ef276 100644
--- a/drivers/scsi/pcmcia/qlogic_stub.c
+++ b/drivers/scsi/pcmcia/qlogic_stub.c
@@ -35,7 +35,7 @@
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/timer.h>
#include <linux/ioport.h>
diff --git a/drivers/scsi/pluto.c b/drivers/scsi/pluto.c
index a0ca91c60b60..c651234dde7e 100644
--- a/drivers/scsi/pluto.c
+++ b/drivers/scsi/pluto.c
@@ -8,7 +8,7 @@
#include <linux/delay.h>
#include <linux/types.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c
index 50db38c9742a..cbf9140cbb34 100644
--- a/drivers/scsi/qla1280.c
+++ b/drivers/scsi/qla1280.c
@@ -220,7 +220,7 @@ END OF TERMS AND CONDITIONS
#include "ql1280_fw.h"
#include <linux/stat.h>
-#include <linux/malloc.h> /* for kmalloc() */
+#include <linux/slab.h> /* for kmalloc() */
#ifndef KERNEL_VERSION
diff --git a/drivers/scsi/qlogicpti.c b/drivers/scsi/qlogicpti.c
index d471dddd9994..6466e7f84a11 100644
--- a/drivers/scsi/qlogicpti.c
+++ b/drivers/scsi/qlogicpti.c
@@ -16,7 +16,7 @@
#include <linux/delay.h>
#include <linux/types.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index cfd290c11860..877842224080 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -45,7 +45,7 @@
#include <linux/sched.h>
#include <linux/timer.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/kernel.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index 3d6e45fcdc36..87a44846de1e 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -14,7 +14,7 @@
#include <linux/sched.h>
#include <linux/timer.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/kernel.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index dcde48437493..3dbdb6ca2c92 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -23,7 +23,7 @@
#include <linux/sched.h>
#include <linux/timer.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/kernel.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/scsi_merge.c b/drivers/scsi/scsi_merge.c
index 4ebadd868ebd..e7673c0803a2 100644
--- a/drivers/scsi/scsi_merge.c
+++ b/drivers/scsi/scsi_merge.c
@@ -39,7 +39,7 @@
#include <linux/sched.h>
#include <linux/timer.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/kernel.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/scsi_obsolete.c b/drivers/scsi/scsi_obsolete.c
index 55adb72af27a..3b3990dfb0ef 100644
--- a/drivers/scsi/scsi_obsolete.c
+++ b/drivers/scsi/scsi_obsolete.c
@@ -52,7 +52,7 @@
#include <linux/sched.h>
#include <linux/timer.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/kernel.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/scsi_proc.c b/drivers/scsi/scsi_proc.c
index 3353a6aa7195..b486119b171e 100644
--- a/drivers/scsi/scsi_proc.c
+++ b/drivers/scsi/scsi_proc.c
@@ -22,7 +22,7 @@
#include <linux/string.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/proc_fs.h>
#include <linux/errno.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/scsi_queue.c b/drivers/scsi/scsi_queue.c
index 4793f1e8bf94..c41f1ce06928 100644
--- a/drivers/scsi/scsi_queue.c
+++ b/drivers/scsi/scsi_queue.c
@@ -16,7 +16,7 @@
#include <linux/sched.h>
#include <linux/timer.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/kernel.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/scsi_syms.c b/drivers/scsi/scsi_syms.c
index f0e85c70e5e3..b29e90e3cc92 100644
--- a/drivers/scsi/scsi_syms.c
+++ b/drivers/scsi/scsi_syms.c
@@ -9,7 +9,7 @@
#include <linux/sched.h>
#include <linux/timer.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/kernel.h>
#include <linux/blk.h>
diff --git a/drivers/scsi/sun3x_esp.c b/drivers/scsi/sun3x_esp.c
index 2a4d8e58d333..073dcf10c3ea 100644
--- a/drivers/scsi/sun3x_esp.c
+++ b/drivers/scsi/sun3x_esp.c
@@ -8,7 +8,7 @@
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blk.h>
#include <linux/proc_fs.h>
#include <linux/stat.h>
diff --git a/drivers/scsi/sym53c8xx.c b/drivers/scsi/sym53c8xx.c
index 917e51760223..f78641a9a857 100644
--- a/drivers/scsi/sym53c8xx.c
+++ b/drivers/scsi/sym53c8xx.c
@@ -126,7 +126,7 @@
#include <linux/errno.h>
#include <linux/pci.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/ioport.h>
#include <linux/time.h>
diff --git a/drivers/scsi/wd7000.c b/drivers/scsi/wd7000.c
index e7af1328bb9c..c4e5e98d73ad 100644
--- a/drivers/scsi/wd7000.c
+++ b/drivers/scsi/wd7000.c
@@ -151,7 +151,7 @@
#include <linux/types.h>
#include <linux/string.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/spinlock.h>
#include <asm/system.h>
#include <asm/dma.h>
diff --git a/drivers/sgi/char/ds1286.c b/drivers/sgi/char/ds1286.c
index df82bfb51399..9a9a0ef99a28 100644
--- a/drivers/sgi/char/ds1286.c
+++ b/drivers/sgi/char/ds1286.c
@@ -31,7 +31,7 @@
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/miscdevice.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/fcntl.h>
#include <linux/init.h>
diff --git a/drivers/sgi/char/graphics.c b/drivers/sgi/char/graphics.c
index 46f9402439c2..24c6fbaaefa0 100644
--- a/drivers/sgi/char/graphics.c
+++ b/drivers/sgi/char/graphics.c
@@ -31,7 +31,7 @@
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/mman.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/module.h>
#include <linux/smp_lock.h>
#include <asm/uaccess.h>
diff --git a/drivers/sound/cmpci.c b/drivers/sound/cmpci.c
index b9f345f8b4f8..e962e22baab8 100644
--- a/drivers/sound/cmpci.c
+++ b/drivers/sound/cmpci.c
@@ -106,7 +106,7 @@
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/sound.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/soundcard.h>
#include <linux/pci.h>
#include <linux/wrapper.h>
diff --git a/drivers/sound/cs46xx.c b/drivers/sound/cs46xx.c
index 147e55d101e3..bc9ba60e1e64 100644
--- a/drivers/sound/cs46xx.c
+++ b/drivers/sound/cs46xx.c
@@ -58,7 +58,7 @@
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/sound.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/soundcard.h>
#include <linux/pci.h>
#ifdef CS46XX_PM
diff --git a/drivers/sound/dmasound/dmasound_awacs.c b/drivers/sound/dmasound/dmasound_awacs.c
index 0415191ec926..2f85ffc27234 100644
--- a/drivers/sound/dmasound/dmasound_awacs.c
+++ b/drivers/sound/dmasound/dmasound_awacs.c
@@ -10,12 +10,13 @@
#include <linux/module.h>
#include <linux/config.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/soundcard.h>
#include <linux/adb.h>
#include <linux/nvram.h>
+#include <linux/tty.h>
#include <linux/vt_kern.h>
#ifdef CONFIG_ADB_CUDA
#include <linux/cuda.h>
diff --git a/drivers/sound/dmasound/dmasound_core.c b/drivers/sound/dmasound/dmasound_core.c
index 5550ee2c9fac..db16223c6f60 100644
--- a/drivers/sound/dmasound/dmasound_core.c
+++ b/drivers/sound/dmasound/dmasound_core.c
@@ -107,7 +107,7 @@
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sound.h>
#include <linux/init.h>
#include <linux/soundcard.h>
diff --git a/drivers/sound/dmasound/dmasound_q40.c b/drivers/sound/dmasound/dmasound_q40.c
index 0e83e1fb6332..db6960c147da 100644
--- a/drivers/sound/dmasound/dmasound_q40.c
+++ b/drivers/sound/dmasound/dmasound_q40.c
@@ -10,7 +10,7 @@
#include <linux/module.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/soundcard.h>
#include <asm/uaccess.h>
diff --git a/drivers/sound/emu10k1/audio.c b/drivers/sound/emu10k1/audio.c
index 2280ca236b3f..470ce57dc8ed 100644
--- a/drivers/sound/emu10k1/audio.c
+++ b/drivers/sound/emu10k1/audio.c
@@ -33,7 +33,7 @@
#define __NO_VERSION__
#include <linux/module.h>
#include <linux/poll.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/version.h>
#include <linux/bitops.h>
#include <asm/io.h>
diff --git a/drivers/sound/emu10k1/cardmi.c b/drivers/sound/emu10k1/cardmi.c
index e39e8f0f818d..ecec8dea1040 100644
--- a/drivers/sound/emu10k1/cardmi.c
+++ b/drivers/sound/emu10k1/cardmi.c
@@ -31,7 +31,7 @@
**********************************************************************
*/
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include "hwaccess.h"
diff --git a/drivers/sound/emu10k1/cardmo.c b/drivers/sound/emu10k1/cardmo.c
index 726a83424cdc..7adb9de02829 100644
--- a/drivers/sound/emu10k1/cardmo.c
+++ b/drivers/sound/emu10k1/cardmo.c
@@ -31,7 +31,7 @@
**********************************************************************
*/
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include "hwaccess.h"
#include "8010.h"
diff --git a/drivers/sound/emu10k1/main.c b/drivers/sound/emu10k1/main.c
index 20d35fa2039c..171b5aa5913a 100644
--- a/drivers/sound/emu10k1/main.c
+++ b/drivers/sound/emu10k1/main.c
@@ -52,7 +52,7 @@
/* These are only included once per module */
#include <linux/version.h>
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/delay.h>
diff --git a/drivers/sound/emu10k1/midi.c b/drivers/sound/emu10k1/midi.c
index 3782b8b7c458..c2b13b5f20ea 100644
--- a/drivers/sound/emu10k1/midi.c
+++ b/drivers/sound/emu10k1/midi.c
@@ -32,7 +32,7 @@
#define __NO_VERSION__
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/version.h>
#include <linux/sched.h>
#include <linux/smp_lock.h>
diff --git a/drivers/sound/es1370.c b/drivers/sound/es1370.c
index 885612f8ce5a..b5f270fb4b08 100644
--- a/drivers/sound/es1370.c
+++ b/drivers/sound/es1370.c
@@ -146,7 +146,7 @@
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/sound.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/soundcard.h>
#include <linux/pci.h>
#include <linux/smp_lock.h>
diff --git a/drivers/sound/es1371.c b/drivers/sound/es1371.c
index ae22d6cacc92..4abcfe663be9 100644
--- a/drivers/sound/es1371.c
+++ b/drivers/sound/es1371.c
@@ -113,7 +113,7 @@
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/sound.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/soundcard.h>
#include <linux/pci.h>
#include <linux/init.h>
diff --git a/drivers/sound/esssolo1.c b/drivers/sound/esssolo1.c
index ac2b6d243699..2763f6522665 100644
--- a/drivers/sound/esssolo1.c
+++ b/drivers/sound/esssolo1.c
@@ -81,7 +81,7 @@
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/sound.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/soundcard.h>
#include <linux/pci.h>
#include <linux/bitops.h>
diff --git a/drivers/sound/i810_audio.c b/drivers/sound/i810_audio.c
index ab2dacd89eec..78e3b88476d1 100644
--- a/drivers/sound/i810_audio.c
+++ b/drivers/sound/i810_audio.c
@@ -73,7 +73,7 @@
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/sound.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/soundcard.h>
#include <linux/pci.h>
#include <asm/io.h>
diff --git a/drivers/sound/maestro.c b/drivers/sound/maestro.c
index 6bdb2ade8a37..32d55cb7661a 100644
--- a/drivers/sound/maestro.c
+++ b/drivers/sound/maestro.c
@@ -231,7 +231,7 @@
#include <linux/ioport.h>
#include <linux/delay.h>
#include <linux/sound.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/soundcard.h>
#include <linux/pci.h>
#include <linux/spinlock.h>
diff --git a/drivers/sound/maestro3.c b/drivers/sound/maestro3.c
index 33c694ab7ecd..a8fb70b1b42a 100644
--- a/drivers/sound/maestro3.c
+++ b/drivers/sound/maestro3.c
@@ -28,6 +28,8 @@
* Shouts go out to Mike "DJ XPCom" Ang.
*
* History
+ * v1.21 - Feb 04 2001 - Zach Brown <zab@zabbo.net>
+ * fix up really dumb notifier -> suspend oops
* v1.20 - Jan 30 2001 - Zach Brown <zab@zabbo.net>
* get rid of pm callback and use pci_dev suspend/resume instead
* m3_probe cleanups, including pm oops think-o
@@ -147,7 +149,7 @@
#define M_DEBUG 1
-#define DRIVER_VERSION "1.20"
+#define DRIVER_VERSION "1.21"
#define M3_MODULE_NAME "maestro3"
#define PFX M3_MODULE_NAME ": "
@@ -2763,7 +2765,6 @@ static int m3_notifier(struct notifier_block *nb, unsigned long event, void *buf
static void m3_suspend(struct pci_dev *pci_dev)
{
unsigned long flags;
- int index;
int i;
struct m3_card *card = pci_dev->driver_data;
@@ -2788,15 +2789,18 @@ static void m3_suspend(struct pci_dev *pci_dev)
m3_assp_halt(card);
- index = 0;
- DPRINTK(DPMOD, "saving code\n");
- for(i = REV_B_CODE_MEMORY_BEGIN ; i <= REV_B_CODE_MEMORY_END; i++)
- card->suspend_mem[index++] =
- m3_assp_read(card, MEMTYPE_INTERNAL_CODE, i);
- DPRINTK(DPMOD, "saving data\n");
- for(i = REV_B_DATA_MEMORY_BEGIN ; i <= REV_B_DATA_MEMORY_END; i++)
- card->suspend_mem[index++] =
- m3_assp_read(card, MEMTYPE_INTERNAL_DATA, i);
+ if(card->suspend_mem) {
+ int index = 0;
+
+ DPRINTK(DPMOD, "saving code\n");
+ for(i = REV_B_CODE_MEMORY_BEGIN ; i <= REV_B_CODE_MEMORY_END; i++)
+ card->suspend_mem[index++] =
+ m3_assp_read(card, MEMTYPE_INTERNAL_CODE, i);
+ DPRINTK(DPMOD, "saving data\n");
+ for(i = REV_B_DATA_MEMORY_BEGIN ; i <= REV_B_DATA_MEMORY_END; i++)
+ card->suspend_mem[index++] =
+ m3_assp_read(card, MEMTYPE_INTERNAL_DATA, i);
+ }
DPRINTK(DPMOD, "powering down apci regs\n");
m3_outw(card, 0xffff, 0x54);
diff --git a/drivers/sound/msnd.c b/drivers/sound/msnd.c
index 2fd11df4b23d..a9facd762566 100644
--- a/drivers/sound/msnd.c
+++ b/drivers/sound/msnd.c
@@ -30,7 +30,7 @@
#endif
#include <linux/module.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/types.h>
#include <linux/delay.h>
diff --git a/drivers/sound/msnd_pinnacle.c b/drivers/sound/msnd_pinnacle.c
index 305969ff0697..f9914634e5fd 100644
--- a/drivers/sound/msnd_pinnacle.c
+++ b/drivers/sound/msnd_pinnacle.c
@@ -37,7 +37,7 @@
#include <linux/config.h>
#include <linux/version.h>
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/types.h>
#include <linux/delay.h>
#include <linux/init.h>
diff --git a/drivers/sound/os.h b/drivers/sound/os.h
index 09b8c2b86dd7..1a66e3a8441d 100644
--- a/drivers/sound/os.h
+++ b/drivers/sound/os.h
@@ -20,7 +20,7 @@
#include <asm/param.h>
#include <linux/ptrace.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <asm/page.h>
#include <asm/system.h>
diff --git a/drivers/sound/sonicvibes.c b/drivers/sound/sonicvibes.c
index c0f337a4cfb6..d0c37ba0af89 100644
--- a/drivers/sound/sonicvibes.c
+++ b/drivers/sound/sonicvibes.c
@@ -100,7 +100,7 @@
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/sound.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/soundcard.h>
#include <linux/pci.h>
#include <asm/io.h>
diff --git a/drivers/sound/sound_core.c b/drivers/sound/sound_core.c
index d266b1353576..b45802ed5d61 100644
--- a/drivers/sound/sound_core.c
+++ b/drivers/sound/sound_core.c
@@ -37,7 +37,7 @@
#include <linux/config.h>
#include <linux/module.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/fs.h>
diff --git a/drivers/sound/sound_firmware.c b/drivers/sound/sound_firmware.c
index 393e6a780d26..9e8691d284ea 100644
--- a/drivers/sound/sound_firmware.c
+++ b/drivers/sound/sound_firmware.c
@@ -3,7 +3,7 @@
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/unistd.h>
#include <asm/uaccess.h>
diff --git a/drivers/sound/soundcard.c b/drivers/sound/soundcard.c
index 87ec7f181421..de95d6c89e56 100644
--- a/drivers/sound/soundcard.c
+++ b/drivers/sound/soundcard.c
@@ -37,7 +37,7 @@
#include <asm/io.h>
#include <asm/segment.h>
#include <linux/wait.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/major.h>
diff --git a/drivers/sound/sscape.c b/drivers/sound/sscape.c
index ff9e0b91be84..694321be7fd5 100644
--- a/drivers/sound/sscape.c
+++ b/drivers/sound/sscape.c
@@ -36,7 +36,7 @@
#include <asm/io.h>
#include <asm/segment.h>
#include <linux/wait.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/delay.h>
#include <linux/proc_fs.h>
diff --git a/drivers/sound/trident.c b/drivers/sound/trident.c
index db5f2b611bf6..0a819243940d 100644
--- a/drivers/sound/trident.c
+++ b/drivers/sound/trident.c
@@ -108,7 +108,7 @@
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/sound.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/soundcard.h>
#include <linux/pci.h>
#include <asm/io.h>
diff --git a/drivers/sound/wavfront.c b/drivers/sound/wavfront.c
index 8e810691734d..accc16ccf1fe 100644
--- a/drivers/sound/wavfront.c
+++ b/drivers/sound/wavfront.c
@@ -2534,7 +2534,7 @@ static int __init detect_wavefront (int irq, int io_base)
#define __KERNEL_SYSCALLS__
#include <linux/fs.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/unistd.h>
#include <asm/uaccess.h>
diff --git a/drivers/telephony/ixj.c b/drivers/telephony/ixj.c
index cab9b4e5ffbb..4bb271f5adfe 100644
--- a/drivers/telephony/ixj.c
+++ b/drivers/telephony/ixj.c
@@ -53,7 +53,7 @@ static char ixj_c_revision[] = "$Revision: 3.31 $";
#include <linux/kernel.h> /* printk() */
#include <linux/fs.h> /* everything... */
#include <linux/errno.h> /* error codes */
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/ioport.h>
#include <linux/interrupt.h>
diff --git a/drivers/usb/acm.c b/drivers/usb/acm.c
index 555a7e967e47..63a006e16191 100644
--- a/drivers/usb/acm.c
+++ b/drivers/usb/acm.c
@@ -45,8 +45,9 @@
#include <linux/errno.h>
#include <linux/poll.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
+#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/tty_flip.h>
#include <linux/tty.h>
diff --git a/drivers/usb/audio.c b/drivers/usb/audio.c
index fb4939d92a26..4bff140c8f29 100644
--- a/drivers/usb/audio.c
+++ b/drivers/usb/audio.c
@@ -170,7 +170,7 @@
#include <linux/version.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/timer.h>
#include <linux/sched.h>
diff --git a/drivers/usb/bluetooth.c b/drivers/usb/bluetooth.c
index 41a3c857e8c6..62bcd502e7af 100644
--- a/drivers/usb/bluetooth.c
+++ b/drivers/usb/bluetooth.c
@@ -75,11 +75,11 @@
#include <linux/errno.h>
#include <linux/poll.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
+#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/tty_flip.h>
-#include <linux/tty.h>
#include <linux/module.h>
#define DEBUG
diff --git a/drivers/usb/dc2xx.c b/drivers/usb/dc2xx.c
index 58d6b28435e8..cb785e26dc12 100644
--- a/drivers/usb/dc2xx.c
+++ b/drivers/usb/dc2xx.c
@@ -60,7 +60,7 @@
#include <linux/random.h>
#include <linux/poll.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/module.h>
#ifdef CONFIG_USB_DEBUG
diff --git a/drivers/usb/dsbr100.c b/drivers/usb/dsbr100.c
index 32e61ce7dfb2..687e0cc070e7 100644
--- a/drivers/usb/dsbr100.c
+++ b/drivers/usb/dsbr100.c
@@ -60,7 +60,7 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/input.h>
#include <linux/videodev.h>
#include <linux/usb.h>
diff --git a/drivers/usb/hid.c b/drivers/usb/hid.c
index 208be6775437..c407fd88382d 100644
--- a/drivers/usb/hid.c
+++ b/drivers/usb/hid.c
@@ -30,7 +30,7 @@
*/
#include <linux/module.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/input.h>
#include <linux/init.h>
#include <linux/kernel.h>
diff --git a/drivers/usb/hid.h b/drivers/usb/hid.h
index 98abc8a76651..b6fdf98ed51b 100644
--- a/drivers/usb/hid.h
+++ b/drivers/usb/hid.h
@@ -31,7 +31,7 @@
*/
#include <linux/types.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/list.h>
/*
diff --git a/drivers/usb/hub.c b/drivers/usb/hub.c
index 0306cf2ead53..e623209e8e9f 100644
--- a/drivers/usb/hub.c
+++ b/drivers/usb/hub.c
@@ -11,7 +11,7 @@
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/list.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp_lock.h>
#ifdef CONFIG_USB_DEBUG
#define DEBUG
diff --git a/drivers/usb/ibmcam.c b/drivers/usb/ibmcam.c
index ca1c32cd94eb..33d34a14b36c 100644
--- a/drivers/usb/ibmcam.c
+++ b/drivers/usb/ibmcam.c
@@ -28,7 +28,7 @@
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/list.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/smp_lock.h>
#include <linux/videodev.h>
diff --git a/drivers/usb/mdc800.c b/drivers/usb/mdc800.c
index 71df829d7f7e..8589915d80f1 100644
--- a/drivers/usb/mdc800.c
+++ b/drivers/usb/mdc800.c
@@ -84,7 +84,7 @@
#include <linux/random.h>
#include <linux/poll.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/module.h>
#include <linux/smp_lock.h>
diff --git a/drivers/usb/microtek.c b/drivers/usb/microtek.c
index 1368056617b1..c1ea120b698f 100644
--- a/drivers/usb/microtek.c
+++ b/drivers/usb/microtek.c
@@ -114,7 +114,7 @@
#include <linux/random.h>
#include <linux/poll.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/spinlock.h>
#include <linux/smp_lock.h>
#include <linux/usb.h>
diff --git a/drivers/usb/pegasus.c b/drivers/usb/pegasus.c
index 94e609ad20e5..26116ab4777d 100644
--- a/drivers/usb/pegasus.c
+++ b/drivers/usb/pegasus.c
@@ -41,7 +41,7 @@
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/netdevice.h>
diff --git a/drivers/usb/printer.c b/drivers/usb/printer.c
index e734bd2d7588..8bcdae35a4e1 100644
--- a/drivers/usb/printer.c
+++ b/drivers/usb/printer.c
@@ -42,7 +42,7 @@
#include <linux/signal.h>
#include <linux/poll.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/lp.h>
#undef DEBUG
#include <linux/usb.h>
diff --git a/drivers/usb/rio500.c b/drivers/usb/rio500.c
index 29b926056bbc..e22c1a4df444 100644
--- a/drivers/usb/rio500.c
+++ b/drivers/usb/rio500.c
@@ -33,7 +33,7 @@
#include <linux/random.h>
#include <linux/poll.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/spinlock.h>
#include <linux/usb.h>
#include <linux/smp_lock.h>
diff --git a/drivers/usb/scanner.h b/drivers/usb/scanner.h
index e052e9a4f215..18f38fb9f329 100644
--- a/drivers/usb/scanner.h
+++ b/drivers/usb/scanner.h
@@ -26,7 +26,7 @@
#include <linux/errno.h>
#include <asm/uaccess.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/ioctl.h>
#include <linux/sched.h>
diff --git a/drivers/usb/serial/belkin_sa.c b/drivers/usb/serial/belkin_sa.c
index c24c5fc8b0a6..f86b53c8c51a 100644
--- a/drivers/usb/serial/belkin_sa.c
+++ b/drivers/usb/serial/belkin_sa.c
@@ -57,11 +57,11 @@
#include <linux/errno.h>
#include <linux/poll.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
+#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/tty_flip.h>
-#include <linux/tty.h>
#include <linux/module.h>
#include <linux/spinlock.h>
diff --git a/drivers/usb/serial/digi_acceleport.c b/drivers/usb/serial/digi_acceleport.c
index 9139f868c0c3..565644765b43 100644
--- a/drivers/usb/serial/digi_acceleport.c
+++ b/drivers/usb/serial/digi_acceleport.c
@@ -233,11 +233,11 @@
#include <linux/errno.h>
#include <linux/poll.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
+#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/tty_flip.h>
-#include <linux/tty.h>
#include <linux/module.h>
#include <linux/spinlock.h>
#include <linux/tqueue.h>
diff --git a/drivers/usb/serial/empeg.c b/drivers/usb/serial/empeg.c
index 19e5ec94f199..a2768ace3baf 100644
--- a/drivers/usb/serial/empeg.c
+++ b/drivers/usb/serial/empeg.c
@@ -48,11 +48,11 @@
#include <linux/errno.h>
#include <linux/poll.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
+#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/tty_flip.h>
-#include <linux/tty.h>
#include <linux/module.h>
#include <linux/spinlock.h>
#ifdef CONFIG_USB_SERIAL_DEBUG
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index 41b7b862859d..8940704c75ae 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -71,11 +71,11 @@
#include <linux/errno.h>
#include <linux/poll.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
+#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/tty_flip.h>
-#include <linux/tty.h>
#include <linux/module.h>
#include <linux/spinlock.h>
diff --git a/drivers/usb/serial/keyspan.c b/drivers/usb/serial/keyspan.c
index 8d7c9c035ca5..a7be1b6505a9 100644
--- a/drivers/usb/serial/keyspan.c
+++ b/drivers/usb/serial/keyspan.c
@@ -55,11 +55,11 @@
#include <linux/errno.h>
#include <linux/poll.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
+#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/tty_flip.h>
-#include <linux/tty.h>
#include <linux/module.h>
#include <linux/spinlock.h>
diff --git a/drivers/usb/serial/keyspan_pda.c b/drivers/usb/serial/keyspan_pda.c
index ef5e1263b090..1e6521d0178f 100644
--- a/drivers/usb/serial/keyspan_pda.c
+++ b/drivers/usb/serial/keyspan_pda.c
@@ -59,11 +59,11 @@
#include <linux/errno.h>
#include <linux/poll.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
+#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/tty_flip.h>
-#include <linux/tty.h>
#include <linux/module.h>
#include <linux/spinlock.h>
#include <linux/tqueue.h>
diff --git a/drivers/usb/serial/mct_u232.c b/drivers/usb/serial/mct_u232.c
index 1a91ac354f93..eb51be38eac7 100644
--- a/drivers/usb/serial/mct_u232.c
+++ b/drivers/usb/serial/mct_u232.c
@@ -46,11 +46,11 @@
#include <linux/errno.h>
#include <linux/poll.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
+#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/tty_flip.h>
-#include <linux/tty.h>
#include <linux/module.h>
#include <linux/spinlock.h>
diff --git a/drivers/usb/serial/omninet.c b/drivers/usb/serial/omninet.c
index 9265d6376821..6f2bf83390ef 100644
--- a/drivers/usb/serial/omninet.c
+++ b/drivers/usb/serial/omninet.c
@@ -36,11 +36,11 @@
#include <linux/errno.h>
#include <linux/poll.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
+#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/tty_flip.h>
-#include <linux/tty.h>
#include <linux/module.h>
#include <linux/spinlock.h>
diff --git a/drivers/usb/serial/usbserial.c b/drivers/usb/serial/usbserial.c
index 80ca1ea84c16..0db097989aeb 100644
--- a/drivers/usb/serial/usbserial.c
+++ b/drivers/usb/serial/usbserial.c
@@ -263,11 +263,11 @@
#include <linux/errno.h>
#include <linux/poll.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
+#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/tty_flip.h>
-#include <linux/tty.h>
#include <linux/module.h>
#include <linux/spinlock.h>
#include <linux/list.h>
diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c
index 8240dd86c64b..7913527d73d0 100644
--- a/drivers/usb/serial/visor.c
+++ b/drivers/usb/serial/visor.c
@@ -85,11 +85,11 @@
#include <linux/errno.h>
#include <linux/poll.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
+#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/tty_flip.h>
-#include <linux/tty.h>
#include <linux/module.h>
#include <linux/spinlock.h>
diff --git a/drivers/usb/serial/whiteheat.c b/drivers/usb/serial/whiteheat.c
index 46b625832fea..fb26ae14e2dd 100644
--- a/drivers/usb/serial/whiteheat.c
+++ b/drivers/usb/serial/whiteheat.c
@@ -55,11 +55,11 @@
#include <linux/errno.h>
#include <linux/poll.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
+#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/tty_flip.h>
-#include <linux/tty.h>
#include <linux/module.h>
#include <linux/spinlock.h>
diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c
index 241f7d5f62eb..6b2f43e3ea49 100644
--- a/drivers/usb/storage/scsiglue.c
+++ b/drivers/usb/storage/scsiglue.c
@@ -49,7 +49,7 @@
#include "debug.h"
#include "transport.h"
-#include <linux/malloc.h>
+#include <linux/slab.h>
/*
* kernel thread actions
diff --git a/drivers/usb/storage/sddr09.c b/drivers/usb/storage/sddr09.c
index e737280f7867..3077b6879e10 100644
--- a/drivers/usb/storage/sddr09.c
+++ b/drivers/usb/storage/sddr09.c
@@ -38,7 +38,7 @@
#include <linux/sched.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#define short_pack(lsb,msb) ( ((u16)(lsb)) | ( ((u16)(msb))<<8 ) )
#define LSB_of(s) ((s)&0xFF)
diff --git a/drivers/usb/storage/shuttle_usbat.c b/drivers/usb/storage/shuttle_usbat.c
index c0de9c14c8a7..5d3983b10b7b 100644
--- a/drivers/usb/storage/shuttle_usbat.c
+++ b/drivers/usb/storage/shuttle_usbat.c
@@ -44,7 +44,7 @@
#include <linux/sched.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
extern int usb_stor_control_msg(struct us_data *us, unsigned int pipe,
u8 request, u8 requesttype, u16 value, u16 index,
diff --git a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c
index c46ff24dc24a..9fabf770a98e 100644
--- a/drivers/usb/storage/transport.c
+++ b/drivers/usb/storage/transport.c
@@ -52,7 +52,7 @@
#include <linux/sched.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
/***********************************************************************
* Helper routines
diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
index 1e0f40f50806..47df666de545 100644
--- a/drivers/usb/storage/usb.c
+++ b/drivers/usb/storage/usb.c
@@ -70,7 +70,7 @@
#include <linux/sched.h>
#include <linux/errno.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
/* Some informational data */
MODULE_AUTHOR("Matthew Dharm <mdharm-usb@one-eyed-alien.net>");
diff --git a/drivers/usb/uhci.c b/drivers/usb/uhci.c
index 40cf2f74649b..5d1b3f60ad71 100644
--- a/drivers/usb/uhci.c
+++ b/drivers/usb/uhci.c
@@ -33,7 +33,7 @@
#include <linux/delay.h>
#include <linux/ioport.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/errno.h>
#include <linux/unistd.h>
diff --git a/drivers/usb/usb-debug.c b/drivers/usb/usb-debug.c
index e8da9e376588..a2958fc6cf42 100644
--- a/drivers/usb/usb-debug.c
+++ b/drivers/usb/usb-debug.c
@@ -8,7 +8,7 @@
#include <linux/version.h>
#include <linux/kernel.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#ifdef CONFIG_USB_DEBUG
#define DEBUG
#else
diff --git a/drivers/usb/usb-ohci.c b/drivers/usb/usb-ohci.c
index 9d424a61af7f..b8b86f487b04 100644
--- a/drivers/usb/usb-ohci.c
+++ b/drivers/usb/usb-ohci.c
@@ -47,7 +47,7 @@
#include <linux/delay.h>
#include <linux/ioport.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/errno.h>
#include <linux/init.h>
diff --git a/drivers/usb/usb-uhci.c b/drivers/usb/usb-uhci.c
index b4cace1dcf79..574b9cab2e8e 100644
--- a/drivers/usb/usb-uhci.c
+++ b/drivers/usb/usb-uhci.c
@@ -26,7 +26,7 @@
#include <linux/delay.h>
#include <linux/ioport.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/errno.h>
#include <linux/unistd.h>
diff --git a/drivers/usb/usb.c b/drivers/usb/usb.c
index c94aed09f00e..a7830c19c835 100644
--- a/drivers/usb/usb.c
+++ b/drivers/usb/usb.c
@@ -26,7 +26,7 @@
#include <linux/module.h>
#include <linux/string.h>
#include <linux/bitops.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/interrupt.h> /* for in_interrupt() */
#include <linux/kmod.h>
#include <linux/init.h>
diff --git a/drivers/usb/usbkbd.c b/drivers/usb/usbkbd.c
index 08fef2d4c51b..61d3fec9baaa 100644
--- a/drivers/usb/usbkbd.c
+++ b/drivers/usb/usbkbd.c
@@ -29,7 +29,7 @@
*/
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/module.h>
#include <linux/input.h>
#include <linux/init.h>
diff --git a/drivers/usb/usbmouse.c b/drivers/usb/usbmouse.c
index 33aee785d0d5..680ed74901d1 100644
--- a/drivers/usb/usbmouse.c
+++ b/drivers/usb/usbmouse.c
@@ -29,7 +29,7 @@
*/
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/input.h>
#include <linux/module.h>
#include <linux/init.h>
diff --git a/drivers/usb/wacom.c b/drivers/usb/wacom.c
index 4397c2da2094..73e932ddeffe 100644
--- a/drivers/usb/wacom.c
+++ b/drivers/usb/wacom.c
@@ -51,7 +51,7 @@
*/
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/input.h>
#include <linux/module.h>
#include <linux/init.h>
diff --git a/drivers/video/S3triofb.c b/drivers/video/S3triofb.c
index e8c0c97daeb2..9115ce37d865 100644
--- a/drivers/video/S3triofb.c
+++ b/drivers/video/S3triofb.c
@@ -30,7 +30,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/acornfb.c b/drivers/video/acornfb.c
index 5289a4a83fdf..bba3a3ce5d53 100644
--- a/drivers/video/acornfb.c
+++ b/drivers/video/acornfb.c
@@ -23,7 +23,7 @@
#include <linux/ctype.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/fb.h>
diff --git a/drivers/video/amifb.c b/drivers/video/amifb.c
index 1f95e4dac383..fcdf286c8849 100644
--- a/drivers/video/amifb.c
+++ b/drivers/video/amifb.c
@@ -46,7 +46,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/config.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/atafb.c b/drivers/video/atafb.c
index e305027a7ac6..62a1461c2da2 100644
--- a/drivers/video/atafb.c
+++ b/drivers/video/atafb.c
@@ -54,7 +54,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/init.h>
diff --git a/drivers/video/aty128fb.c b/drivers/video/aty128fb.c
index 626bf3cad35f..93913b3b2dc6 100644
--- a/drivers/video/aty128fb.c
+++ b/drivers/video/aty128fb.c
@@ -33,7 +33,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/atyfb.c b/drivers/video/atyfb.c
index 3c0b9408f816..833926b7ba7b 100644
--- a/drivers/video/atyfb.c
+++ b/drivers/video/atyfb.c
@@ -45,7 +45,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/bwtwofb.c b/drivers/video/bwtwofb.c
index ebb5d5e56297..d0ea4e079b96 100644
--- a/drivers/video/bwtwofb.c
+++ b/drivers/video/bwtwofb.c
@@ -15,7 +15,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/cgfourteenfb.c b/drivers/video/cgfourteenfb.c
index 05a578bfd659..223722731240 100644
--- a/drivers/video/cgfourteenfb.c
+++ b/drivers/video/cgfourteenfb.c
@@ -12,7 +12,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/cgsixfb.c b/drivers/video/cgsixfb.c
index b569589d0a8c..6e78465156a4 100644
--- a/drivers/video/cgsixfb.c
+++ b/drivers/video/cgsixfb.c
@@ -13,7 +13,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/cgthreefb.c b/drivers/video/cgthreefb.c
index 9cec20abfa4f..1deff1827229 100644
--- a/drivers/video/cgthreefb.c
+++ b/drivers/video/cgthreefb.c
@@ -13,7 +13,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/chipsfb.c b/drivers/video/chipsfb.c
index 9a3908c4b078..c0bee62d44a9 100644
--- a/drivers/video/chipsfb.c
+++ b/drivers/video/chipsfb.c
@@ -21,7 +21,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/clgenfb.c b/drivers/video/clgenfb.c
index 32a26c2d738e..ecad3bbbed50 100644
--- a/drivers/video/clgenfb.c
+++ b/drivers/video/clgenfb.c
@@ -40,7 +40,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/fb.h>
#include <linux/init.h>
diff --git a/drivers/video/controlfb.c b/drivers/video/controlfb.c
index fe64ab9a143c..58ccd3e139a4 100644
--- a/drivers/video/controlfb.c
+++ b/drivers/video/controlfb.c
@@ -31,7 +31,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/creatorfb.c b/drivers/video/creatorfb.c
index 22349c3807ae..712843792cee 100644
--- a/drivers/video/creatorfb.c
+++ b/drivers/video/creatorfb.c
@@ -11,7 +11,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/cyber2000fb.c b/drivers/video/cyber2000fb.c
index 5cb924fc85c2..d8c524e760d1 100644
--- a/drivers/video/cyber2000fb.c
+++ b/drivers/video/cyber2000fb.c
@@ -31,7 +31,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/fb.h>
#include <linux/pci.h>
diff --git a/drivers/video/cyberfb.c b/drivers/video/cyberfb.c
index 4510d116550d..75f457092869 100644
--- a/drivers/video/cyberfb.c
+++ b/drivers/video/cyberfb.c
@@ -82,7 +82,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/zorro.h>
#include <linux/fb.h>
diff --git a/drivers/video/dn_cfb4.c b/drivers/video/dn_cfb4.c
index 205703be4515..3f30e9d97264 100644
--- a/drivers/video/dn_cfb4.c
+++ b/drivers/video/dn_cfb4.c
@@ -3,7 +3,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <asm/setup.h>
diff --git a/drivers/video/dn_cfb8.c b/drivers/video/dn_cfb8.c
index a654717b3d2f..d200972a780f 100644
--- a/drivers/video/dn_cfb8.c
+++ b/drivers/video/dn_cfb8.c
@@ -3,7 +3,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <asm/setup.h>
diff --git a/drivers/video/dnfb.c b/drivers/video/dnfb.c
index f7a5ffba3af0..7bc2f92b285c 100644
--- a/drivers/video/dnfb.c
+++ b/drivers/video/dnfb.c
@@ -3,7 +3,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <asm/setup.h>
diff --git a/drivers/video/fbcon.c b/drivers/video/fbcon.c
index 32935dfc3cf4..15230bb3b6fa 100644
--- a/drivers/video/fbcon.c
+++ b/drivers/video/fbcon.c
@@ -67,7 +67,7 @@
#include <linux/console.h>
#include <linux/string.h>
#include <linux/kd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fb.h>
#include <linux/vt_kern.h>
#include <linux/selection.h>
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
index 097bc3f12da2..7d5c70808c48 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
@@ -17,7 +17,7 @@
#include <linux/smp_lock.h>
#include <linux/kernel.h>
#include <linux/major.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mman.h>
#include <linux/tty.h>
#include <linux/console.h>
diff --git a/drivers/video/g364fb.c b/drivers/video/g364fb.c
index 43829e53c585..15ed42857f61 100644
--- a/drivers/video/g364fb.c
+++ b/drivers/video/g364fb.c
@@ -21,7 +21,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/hgafb.c b/drivers/video/hgafb.c
index 87ab4a270f05..5bcdf0d8aeb1 100644
--- a/drivers/video/hgafb.c
+++ b/drivers/video/hgafb.c
@@ -37,7 +37,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/fb.h>
#include <linux/init.h>
diff --git a/drivers/video/hitfb.c b/drivers/video/hitfb.c
index 91b2b77ebd58..747430ebfc1a 100644
--- a/drivers/video/hitfb.c
+++ b/drivers/video/hitfb.c
@@ -17,7 +17,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/nubus.h>
#include <linux/init.h>
diff --git a/drivers/video/hpfb.c b/drivers/video/hpfb.c
index df23d1aff883..a39dbaa8566b 100644
--- a/drivers/video/hpfb.c
+++ b/drivers/video/hpfb.c
@@ -13,7 +13,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/fb.h>
diff --git a/drivers/video/igafb.c b/drivers/video/igafb.c
index ac176a8cf8c4..aa08b6d8afdc 100644
--- a/drivers/video/igafb.c
+++ b/drivers/video/igafb.c
@@ -34,7 +34,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/imsttfb.c b/drivers/video/imsttfb.c
index 1749f3246dd7..f004fb3adf0a 100644
--- a/drivers/video/imsttfb.c
+++ b/drivers/video/imsttfb.c
@@ -22,7 +22,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/leofb.c b/drivers/video/leofb.c
index 6b233e5f81e2..c24058a8d1ec 100644
--- a/drivers/video/leofb.c
+++ b/drivers/video/leofb.c
@@ -12,7 +12,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/macfb.c b/drivers/video/macfb.c
index 78538935a9b9..d471d7a46799 100644
--- a/drivers/video/macfb.c
+++ b/drivers/video/macfb.c
@@ -25,7 +25,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/nubus.h>
#include <linux/init.h>
diff --git a/drivers/video/matrox/matroxfb_base.h b/drivers/video/matrox/matroxfb_base.h
index 68344dda2fdf..20c627905c31 100644
--- a/drivers/video/matrox/matroxfb_base.h
+++ b/drivers/video/matrox/matroxfb_base.h
@@ -32,7 +32,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/fb.h>
#include <linux/console.h>
diff --git a/drivers/video/mdacon.c b/drivers/video/mdacon.c
index 98e58b46c628..bbb046178c1c 100644
--- a/drivers/video/mdacon.c
+++ b/drivers/video/mdacon.c
@@ -33,7 +33,7 @@
#include <linux/console_struct.h>
#include <linux/string.h>
#include <linux/kd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vt_kern.h>
#include <linux/vt_buffer.h>
#include <linux/selection.h>
diff --git a/drivers/video/offb.c b/drivers/video/offb.c
index 1a1b7a3db369..b0397b1f82f7 100644
--- a/drivers/video/offb.c
+++ b/drivers/video/offb.c
@@ -19,7 +19,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/p9100fb.c b/drivers/video/p9100fb.c
index f8687d7a7c76..59d8791c96b9 100644
--- a/drivers/video/p9100fb.c
+++ b/drivers/video/p9100fb.c
@@ -11,7 +11,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/platinumfb.c b/drivers/video/platinumfb.c
index 20ab5c4e59e8..34ef08881c37 100644
--- a/drivers/video/platinumfb.c
+++ b/drivers/video/platinumfb.c
@@ -24,7 +24,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/pm2fb.c b/drivers/video/pm2fb.c
index a3ee01ea130f..8eee8643c12a 100644
--- a/drivers/video/pm2fb.c
+++ b/drivers/video/pm2fb.c
@@ -20,7 +20,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/promcon.c b/drivers/video/promcon.c
index 9c7277b702a1..cc2cac9f1de9 100644
--- a/drivers/video/promcon.c
+++ b/drivers/video/promcon.c
@@ -12,7 +12,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/console.h>
#include <linux/console_struct.h>
diff --git a/drivers/video/q40fb.c b/drivers/video/q40fb.c
index a5c68f070733..e76d6e97976e 100644
--- a/drivers/video/q40fb.c
+++ b/drivers/video/q40fb.c
@@ -3,7 +3,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/retz3fb.c b/drivers/video/retz3fb.c
index 9f1be5adc7ba..73d3d489565e 100644
--- a/drivers/video/retz3fb.c
+++ b/drivers/video/retz3fb.c
@@ -26,7 +26,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/fb.h>
#include <linux/zorro.h>
diff --git a/drivers/video/riva/fbdev.c b/drivers/video/riva/fbdev.c
index b2f899a40026..fc3d7c17a03d 100644
--- a/drivers/video/riva/fbdev.c
+++ b/drivers/video/riva/fbdev.c
@@ -36,7 +36,7 @@
#include <linux/mm.h>
#include <linux/selection.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/fb.h>
#include <linux/init.h>
diff --git a/drivers/video/sa1100fb.c b/drivers/video/sa1100fb.c
index 2f4e2c1403f4..7fc1e0c71956 100644
--- a/drivers/video/sa1100fb.c
+++ b/drivers/video/sa1100fb.c
@@ -65,7 +65,7 @@
#include <linux/ctype.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/fb.h>
#include <linux/delay.h>
diff --git a/drivers/video/sbusfb.c b/drivers/video/sbusfb.c
index 4d5b66386d13..e68950bf401b 100644
--- a/drivers/video/sbusfb.c
+++ b/drivers/video/sbusfb.c
@@ -28,7 +28,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/sgivwfb.c b/drivers/video/sgivwfb.c
index e1751e84e088..bf8d17e5409e 100644
--- a/drivers/video/sgivwfb.c
+++ b/drivers/video/sgivwfb.c
@@ -16,7 +16,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/sis/sis_main.c b/drivers/video/sis/sis_main.c
index 592180c18810..e53a45e5c9eb 100644
--- a/drivers/video/sis/sis_main.c
+++ b/drivers/video/sis/sis_main.c
@@ -18,7 +18,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/fb.h>
#include <linux/console.h>
diff --git a/drivers/video/skeletonfb.c b/drivers/video/skeletonfb.c
index f6cd0a21e513..bac350b74a19 100644
--- a/drivers/video/skeletonfb.c
+++ b/drivers/video/skeletonfb.c
@@ -14,7 +14,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/fb.h>
#include <linux/init.h>
diff --git a/drivers/video/sticon-bmode.c b/drivers/video/sticon-bmode.c
index e401cbfcd9f1..67ad6167159a 100644
--- a/drivers/video/sticon-bmode.c
+++ b/drivers/video/sticon-bmode.c
@@ -67,7 +67,7 @@ this file *will* be replaced with it. You have been warned.
#include <linux/console.h>
#include <linux/string.h>
#include <linux/kd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vt_kern.h>
#include <linux/selection.h>
#include <linux/ioport.h>
diff --git a/drivers/video/sticore.c b/drivers/video/sticore.c
index 56e7f43ce5f9..11f40694f01f 100644
--- a/drivers/video/sticore.c
+++ b/drivers/video/sticore.c
@@ -1,7 +1,7 @@
#include <linux/module.h>
#include <linux/types.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <asm/uaccess.h>
diff --git a/drivers/video/stifb.c b/drivers/video/stifb.c
index 661ff29c510c..27a28f10c9b9 100644
--- a/drivers/video/stifb.c
+++ b/drivers/video/stifb.c
@@ -28,7 +28,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/fb.h>
#include <linux/init.h>
diff --git a/drivers/video/sun3fb.c b/drivers/video/sun3fb.c
index 87936fc0a814..04e6c5167edf 100644
--- a/drivers/video/sun3fb.c
+++ b/drivers/video/sun3fb.c
@@ -32,7 +32,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/tcxfb.c b/drivers/video/tcxfb.c
index dc23dd40571c..3633fc2e3ce1 100644
--- a/drivers/video/tcxfb.c
+++ b/drivers/video/tcxfb.c
@@ -13,7 +13,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/tdfxfb.c b/drivers/video/tdfxfb.c
index d954dc02e85c..812c3f9c872f 100644
--- a/drivers/video/tdfxfb.c
+++ b/drivers/video/tdfxfb.c
@@ -61,7 +61,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/tgafb.c b/drivers/video/tgafb.c
index 880f1d1db48d..9e41f7f3851e 100644
--- a/drivers/video/tgafb.c
+++ b/drivers/video/tgafb.c
@@ -34,7 +34,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/valkyriefb.c b/drivers/video/valkyriefb.c
index 24a8b04a11bc..7f7bd3a1b998 100644
--- a/drivers/video/valkyriefb.c
+++ b/drivers/video/valkyriefb.c
@@ -44,7 +44,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/vesafb.c b/drivers/video/vesafb.c
index 11e803273193..01862992dc3e 100644
--- a/drivers/video/vesafb.c
+++ b/drivers/video/vesafb.c
@@ -14,7 +14,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/fb.h>
#include <linux/console.h>
diff --git a/drivers/video/vfb.c b/drivers/video/vfb.c
index b494e25c6919..a2d101945c32 100644
--- a/drivers/video/vfb.c
+++ b/drivers/video/vfb.c
@@ -14,7 +14,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
diff --git a/drivers/video/vga16fb.c b/drivers/video/vga16fb.c
index 35197da609f8..a1fa94d371e2 100644
--- a/drivers/video/vga16fb.c
+++ b/drivers/video/vga16fb.c
@@ -15,7 +15,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/fb.h>
#include <linux/console.h>
diff --git a/drivers/video/vgacon.c b/drivers/video/vgacon.c
index 6268b1766644..0f341e2223f2 100644
--- a/drivers/video/vgacon.c
+++ b/drivers/video/vgacon.c
@@ -43,7 +43,7 @@
#include <linux/console_struct.h>
#include <linux/string.h>
#include <linux/kd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vt_kern.h>
#include <linux/selection.h>
#include <linux/spinlock.h>
diff --git a/drivers/video/virgefb.c b/drivers/video/virgefb.c
index 047482699a66..9fbafbaf468a 100644
--- a/drivers/video/virgefb.c
+++ b/drivers/video/virgefb.c
@@ -22,7 +22,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/zorro.h>
#include <linux/fb.h>
diff --git a/fs/adfs/super.c b/fs/adfs/super.c
index a53c2b8e1775..83ba97166647 100644
--- a/fs/adfs/super.c
+++ b/fs/adfs/super.c
@@ -12,7 +12,7 @@
#include <linux/errno.h>
#include <linux/fs.h>
#include <linux/adfs_fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/stat.h>
#include <linux/string.h>
diff --git a/fs/affs/file.c b/fs/affs/file.c
index fac21f70ba55..848f167014f3 100644
--- a/fs/affs/file.c
+++ b/fs/affs/file.c
@@ -21,7 +21,7 @@
#include <linux/fcntl.h>
#include <linux/kernel.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/locks.h>
#include <linux/smp_lock.h>
diff --git a/fs/affs/inode.c b/fs/affs/inode.c
index fcb7e103a56f..99a81fee8e4a 100644
--- a/fs/affs/inode.c
+++ b/fs/affs/inode.c
@@ -14,7 +14,7 @@
#include <asm/div64.h>
#include <linux/errno.h>
#include <linux/fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/sched.h>
#include <linux/affs_fs.h>
diff --git a/fs/affs/super.c b/fs/affs/super.c
index 32ad74eb95ce..c77c3410ca38 100644
--- a/fs/affs/super.c
+++ b/fs/affs/super.c
@@ -14,7 +14,7 @@
#include <linux/module.h>
#include <linux/errno.h>
#include <linux/fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/sched.h>
#include <linux/affs_fs.h>
diff --git a/fs/autofs/autofs_i.h b/fs/autofs/autofs_i.h
index 9dc40922a441..6bad5db45472 100644
--- a/fs/autofs/autofs_i.h
+++ b/fs/autofs/autofs_i.h
@@ -19,7 +19,7 @@
#define AUTOFS_IOC_COUNT 32
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/string.h>
#include <linux/wait.h>
diff --git a/fs/autofs/inode.c b/fs/autofs/inode.c
index 0eb91f3c20b0..1b3ce3edf398 100644
--- a/fs/autofs/inode.c
+++ b/fs/autofs/inode.c
@@ -11,7 +11,7 @@
* ------------------------------------------------------------------------- */
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/file.h>
#include <linux/locks.h>
#include <asm/bitops.h>
diff --git a/fs/autofs/waitq.c b/fs/autofs/waitq.c
index 7c7c8baf2502..c7da7f518f05 100644
--- a/fs/autofs/waitq.c
+++ b/fs/autofs/waitq.c
@@ -10,7 +10,7 @@
*
* ------------------------------------------------------------------------- */
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/signal.h>
#include <linux/file.h>
diff --git a/fs/autofs4/autofs_i.h b/fs/autofs4/autofs_i.h
index 20724eb1c0a3..4dcdcaafcca9 100644
--- a/fs/autofs4/autofs_i.h
+++ b/fs/autofs4/autofs_i.h
@@ -20,7 +20,7 @@
#define AUTOFS_IOC_COUNT 32
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/string.h>
#include <linux/wait.h>
diff --git a/fs/autofs4/inode.c b/fs/autofs4/inode.c
index dd7dd07acc5e..f23705aeb1a8 100644
--- a/fs/autofs4/inode.c
+++ b/fs/autofs4/inode.c
@@ -11,7 +11,7 @@
* ------------------------------------------------------------------------- */
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/file.h>
#include <linux/locks.h>
#include <asm/bitops.h>
diff --git a/fs/autofs4/waitq.c b/fs/autofs4/waitq.c
index a76cde227584..9e5fe900fa4c 100644
--- a/fs/autofs4/waitq.c
+++ b/fs/autofs4/waitq.c
@@ -10,7 +10,7 @@
*
* ------------------------------------------------------------------------- */
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/signal.h>
#include <linux/file.h>
diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c
index b16b0db6a258..42f746fb7b85 100644
--- a/fs/binfmt_aout.c
+++ b/fs/binfmt_aout.c
@@ -20,7 +20,7 @@
#include <linux/fcntl.h>
#include <linux/ptrace.h>
#include <linux/user.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/binfmts.h>
#include <linux/personality.h>
#include <linux/init.h>
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index c84164fc4570..6841b4acb1f3 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -24,7 +24,7 @@
#include <linux/file.h>
#include <linux/fcntl.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/shm.h>
#include <linux/personality.h>
#include <linux/elfcore.h>
diff --git a/fs/binfmt_em86.c b/fs/binfmt_em86.c
index 95c24a70a3d9..dfe8df28172b 100644
--- a/fs/binfmt_em86.c
+++ b/fs/binfmt_em86.c
@@ -11,7 +11,7 @@
#include <linux/module.h>
#include <linux/string.h>
#include <linux/stat.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/locks.h>
#include <linux/smp_lock.h>
#include <linux/binfmts.h>
diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c
index c1653647946a..5ad853910b69 100644
--- a/fs/binfmt_misc.c
+++ b/fs/binfmt_misc.c
@@ -21,7 +21,7 @@
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/binfmts.h>
#include <linux/init.h>
#include <linux/proc_fs.h>
diff --git a/fs/binfmt_script.c b/fs/binfmt_script.c
index ae7de4c24663..2348332e4880 100644
--- a/fs/binfmt_script.c
+++ b/fs/binfmt_script.c
@@ -8,7 +8,7 @@
#include <linux/module.h>
#include <linux/string.h>
#include <linux/stat.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/binfmts.h>
#include <linux/init.h>
#include <linux/file.h>
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 103332fc437b..8761603667a0 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -9,8 +9,9 @@
#include <linux/mm.h>
#include <linux/locks.h>
#include <linux/fcntl.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/kmod.h>
+#include <linux/major.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/smp_lock.h>
diff --git a/fs/buffer.c b/fs/buffer.c
index bea5f09e50ad..6ca6f166bbf6 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -31,7 +31,7 @@
#include <linux/config.h>
#include <linux/sched.h>
#include <linux/fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/locks.h>
#include <linux/errno.h>
#include <linux/swap.h>
diff --git a/fs/coda/cnode.c b/fs/coda/cnode.c
index 12de14e7b0c5..53208881d9c4 100644
--- a/fs/coda/cnode.c
+++ b/fs/coda/cnode.c
@@ -194,9 +194,14 @@ struct inode *coda_fid_to_inode(ViceFid *fid, struct super_block *sb)
return NULL;
}
- /* check if this inode is linked to a cnode */
cii = ITOC(inode);
+ /* The inode might already be purged due to memory pressure */
+ if ( coda_fideq(&cii->c_fid, &NullFID) ) {
+ iput(inode);
+ return NULL;
+ }
+
/* we shouldn't have inode collisions anymore */
if ( !coda_fideq(fid, &cii->c_fid) ) BUG();
diff --git a/fs/coda/psdev.c b/fs/coda/psdev.c
index ef05ac2fbb35..ed88f70cd492 100644
--- a/fs/coda/psdev.c
+++ b/fs/coda/psdev.c
@@ -23,7 +23,7 @@
#include <linux/major.h>
#include <linux/sched.h>
#include <linux/lp.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/fcntl.h>
#include <linux/delay.h>
diff --git a/fs/coda/sysctl.c b/fs/coda/sysctl.c
index 4215c3b41506..4bde88515373 100644
--- a/fs/coda/sysctl.c
+++ b/fs/coda/sysctl.c
@@ -17,7 +17,7 @@
#include <linux/sysctl.h>
#include <linux/swapctl.h>
#include <linux/proc_fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/ctype.h>
#include <asm/bitops.h>
diff --git a/fs/coda/upcall.c b/fs/coda/upcall.c
index 6eb6f2e71c20..2fee47e4cc3d 100644
--- a/fs/coda/upcall.c
+++ b/fs/coda/upcall.c
@@ -519,7 +519,7 @@ int venus_pioctl(struct super_block *sb, struct ViceFid *fid,
/* build packet for Venus */
if (data->vi.in_size > VC_MAXDATASIZE) {
- error = EINVAL;
+ error = -EINVAL;
goto exit;
}
@@ -539,7 +539,7 @@ int venus_pioctl(struct super_block *sb, struct ViceFid *fid,
/* get the data out of user space */
if ( copy_from_user((char*)inp + (long)inp->coda_ioctl.data,
data->vi.in, data->vi.in_size) ) {
- error = EINVAL;
+ error = -EINVAL;
goto exit;
}
@@ -557,7 +557,7 @@ int venus_pioctl(struct super_block *sb, struct ViceFid *fid,
CDEBUG(D_FILE, "return len %d <= request len %d\n",
outp->coda_ioctl.len,
data->vi.out_size);
- error = EINVAL;
+ error = -EINVAL;
} else {
error = verify_area(VERIFY_WRITE, data->vi.out,
data->vi.out_size);
@@ -566,7 +566,7 @@ int venus_pioctl(struct super_block *sb, struct ViceFid *fid,
if (copy_to_user(data->vi.out,
(char *)outp + (long)outp->coda_ioctl.data,
data->vi.out_size)) {
- error = EINVAL;
+ error = -EINVAL;
goto exit;
}
}
diff --git a/fs/dcache.c b/fs/dcache.c
index dae4ea7c0060..3b7851216d6d 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -18,7 +18,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/slab.h>
#include <linux/init.h>
#include <linux/smp_lock.h>
@@ -341,8 +341,7 @@ void prune_dcache(int count)
if (dentry->d_flags & DCACHE_REFERENCED) {
dentry->d_flags &= ~DCACHE_REFERENCED;
list_add(&dentry->d_lru, &dentry_unused);
- count--;
- continue;
+ goto next;
}
dentry_stat.nr_unused--;
@@ -351,6 +350,7 @@ void prune_dcache(int count)
BUG();
prune_one_dentry(dentry);
+ next:
if (!--count)
break;
}
@@ -691,7 +691,7 @@ struct dentry * d_alloc_root(struct inode * root_inode)
static inline struct list_head * d_hash(struct dentry * parent, unsigned long hash)
{
hash += (unsigned long) parent / L1_CACHE_BYTES;
- hash = hash ^ (hash >> D_HASHBITS) ^ (hash >> D_HASHBITS*2);
+ hash = hash ^ (hash >> D_HASHBITS);
return dentry_hashtable + (hash & D_HASHMASK);
}
diff --git a/fs/devfs/base.c b/fs/devfs/base.c
index 5c412e301f99..b26854355a70 100644
--- a/fs/devfs/base.c
+++ b/fs/devfs/base.c
@@ -491,7 +491,7 @@
#include <linux/kernel.h>
#include <linux/wait.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/delay.h>
#include <linux/ctype.h>
diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c
index 0bb8826d8eff..175a40792fb3 100644
--- a/fs/devpts/inode.c
+++ b/fs/devpts/inode.c
@@ -19,7 +19,7 @@
#include <linux/kernel.h>
#include <linux/locks.h>
#include <linux/major.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/tty.h>
#include <asm/bitops.h>
diff --git a/fs/dquot.c b/fs/dquot.c
index a63685d34fdd..fd1c6b67bdb3 100644
--- a/fs/dquot.c
+++ b/fs/dquot.c
@@ -47,7 +47,7 @@
#include <linux/stat.h>
#include <linux/tty.h>
#include <linux/file.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mount.h>
#include <linux/smp.h>
#include <linux/smp_lock.h>
diff --git a/fs/fat/buffer.c b/fs/fat/buffer.c
index 6e8716b1e190..373dcee839a9 100644
--- a/fs/fat/buffer.c
+++ b/fs/fat/buffer.c
@@ -5,7 +5,7 @@
*/
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/fs.h>
#include <linux/msdos_fs.h>
diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index f13260966e26..b559bbe47083 100644
--- a/fs/fat/inode.c
+++ b/fs/fat/inode.c
@@ -27,7 +27,7 @@
#include <linux/stat.h>
#include <linux/locks.h>
#include <linux/fat_cvf.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp_lock.h>
#include "msbuffer.h"
diff --git a/fs/fifo.c b/fs/fifo.c
index ee048ac02c02..f5738c126bce 100644
--- a/fs/fifo.c
+++ b/fs/fifo.c
@@ -10,7 +10,7 @@
*/
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp_lock.h>
static void wait_for_partner(struct inode* inode, unsigned int* cnt)
diff --git a/fs/file.c b/fs/file.c
index 84d0275cdeb3..51d9f7a2588a 100644
--- a/fs/file.c
+++ b/fs/file.c
@@ -9,7 +9,7 @@
#include <linux/fs.h>
#include <linux/mm.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <asm/bitops.h>
diff --git a/fs/hpfs/hpfs_fn.h b/fs/hpfs/hpfs_fn.h
index 78341ca16e54..e30e6137e143 100644
--- a/fs/hpfs/hpfs_fn.h
+++ b/fs/hpfs/hpfs_fn.h
@@ -12,7 +12,7 @@
#include <linux/fs.h>
#include <linux/hpfs_fs.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/locks.h>
diff --git a/fs/inode.c b/fs/inode.c
index ed8b98018247..822e5187a52c 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -725,7 +725,7 @@ static struct inode * get_new_inode(struct super_block *sb, unsigned long ino, s
static inline unsigned long hash(struct super_block *sb, unsigned long i_ino)
{
unsigned long tmp = i_ino + ((unsigned long) sb / L1_CACHE_BYTES);
- tmp = tmp + (tmp >> I_HASHBITS) + (tmp >> I_HASHBITS*2);
+ tmp = tmp + (tmp >> I_HASHBITS);
return tmp & I_HASHMASK;
}
diff --git a/fs/iobuf.c b/fs/iobuf.c
index 4be2258702d3..88507441d407 100644
--- a/fs/iobuf.c
+++ b/fs/iobuf.c
@@ -7,7 +7,7 @@
*/
#include <linux/iobuf.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/slab.h>
static kmem_cache_t *kiobuf_cachep;
diff --git a/fs/ioctl.c b/fs/ioctl.c
index 21af77a3a168..f46bdb1edb0f 100644
--- a/fs/ioctl.c
+++ b/fs/ioctl.c
@@ -9,6 +9,7 @@
#include <linux/file.h>
#include <asm/uaccess.h>
+#include <asm/ioctls.h>
static int file_ioctl(struct file *filp,unsigned int cmd,unsigned long arg)
{
diff --git a/fs/isofs/dir.c b/fs/isofs/dir.c
index 6f0957dce489..48a358de8417 100644
--- a/fs/isofs/dir.c
+++ b/fs/isofs/dir.c
@@ -17,7 +17,7 @@
#include <linux/stat.h>
#include <linux/string.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/locks.h>
#include <linux/config.h>
diff --git a/fs/isofs/inode.c b/fs/isofs/inode.c
index 757a870701ff..90f511bdadb6 100644
--- a/fs/isofs/inode.c
+++ b/fs/isofs/inode.c
@@ -20,7 +20,7 @@
#include <linux/mm.h>
#include <linux/string.h>
#include <linux/locks.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
#include <linux/cdrom.h>
#include <linux/init.h>
diff --git a/fs/isofs/joliet.c b/fs/isofs/joliet.c
index 5b93f458154b..2aac3a8bc3ea 100644
--- a/fs/isofs/joliet.c
+++ b/fs/isofs/joliet.c
@@ -8,7 +8,7 @@
#include <linux/string.h>
#include <linux/nls.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/iso_fs.h>
/*
diff --git a/fs/isofs/namei.c b/fs/isofs/namei.c
index 3f44d90335fa..87fe121f8bbc 100644
--- a/fs/isofs/namei.c
+++ b/fs/isofs/namei.c
@@ -12,7 +12,7 @@
#include <linux/string.h>
#include <linux/stat.h>
#include <linux/fcntl.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
#include <linux/config.h> /* Joliet? */
diff --git a/fs/isofs/rock.c b/fs/isofs/rock.c
index e20f3ad61c75..c351f7af081c 100644
--- a/fs/isofs/rock.c
+++ b/fs/isofs/rock.c
@@ -11,7 +11,7 @@
#include <linux/iso_fs.h>
#include <linux/string.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pagemap.h>
#include <linux/smp_lock.h>
diff --git a/fs/jffs/inode-v23.c b/fs/jffs/inode-v23.c
index 94fd0797d148..d044ef3a377a 100644
--- a/fs/jffs/inode-v23.c
+++ b/fs/jffs/inode-v23.c
@@ -39,7 +39,7 @@
#include <linux/init.h>
#include <linux/types.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/jffs.h>
#include <linux/fs.h>
#include <linux/locks.h>
diff --git a/fs/jffs/intrep.c b/fs/jffs/intrep.c
index 09e88d7bad77..3af256303517 100644
--- a/fs/jffs/intrep.c
+++ b/fs/jffs/intrep.c
@@ -58,7 +58,7 @@
#define __NO_VERSION__
#include <linux/types.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/jffs.h>
#include <linux/fs.h>
#include <linux/stat.h>
diff --git a/fs/jffs/jffs_fm.c b/fs/jffs/jffs_fm.c
index b9bbeb4a9386..7ae964ab828e 100644
--- a/fs/jffs/jffs_fm.c
+++ b/fs/jffs/jffs_fm.c
@@ -17,7 +17,7 @@
*
*/
#define __NO_VERSION__
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blkdev.h>
#include <linux/jffs.h>
#include "jffs_fm.h"
diff --git a/fs/lockd/host.c b/fs/lockd/host.c
index f14c9fcdfd05..02be5d927532 100644
--- a/fs/lockd/host.c
+++ b/fs/lockd/host.c
@@ -10,7 +10,7 @@
#include <linux/types.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/in.h>
#include <linux/sunrpc/clnt.h>
#include <linux/sunrpc/svc.h>
diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c
index 924741f9e96b..02e7115fe19b 100644
--- a/fs/lockd/svc.c
+++ b/fs/lockd/svc.c
@@ -22,7 +22,7 @@
#include <linux/uio.h>
#include <linux/version.h>
#include <linux/unistd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp.h>
#include <linux/smp_lock.h>
diff --git a/fs/lockd/svc4proc.c b/fs/lockd/svc4proc.c
index a1e30454eed2..bb72c629ed5b 100644
--- a/fs/lockd/svc4proc.c
+++ b/fs/lockd/svc4proc.c
@@ -9,7 +9,7 @@
#include <linux/types.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/in.h>
#include <linux/sunrpc/svc.h>
#include <linux/sunrpc/clnt.h>
diff --git a/fs/lockd/svcproc.c b/fs/lockd/svcproc.c
index b0cbd4a5097d..5002972ec0f6 100644
--- a/fs/lockd/svcproc.c
+++ b/fs/lockd/svcproc.c
@@ -10,7 +10,7 @@
#include <linux/config.h>
#include <linux/types.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/in.h>
#include <linux/sunrpc/svc.h>
#include <linux/sunrpc/clnt.h>
diff --git a/fs/lockd/svcshare.c b/fs/lockd/svcshare.c
index ab06a5d31c52..73fbb1ba414b 100644
--- a/fs/lockd/svcshare.c
+++ b/fs/lockd/svcshare.c
@@ -9,7 +9,7 @@
#include <linux/sched.h>
#include <linux/unistd.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sunrpc/clnt.h>
#include <linux/sunrpc/svc.h>
diff --git a/fs/locks.c b/fs/locks.c
index e65b593946c6..7eed30fec934 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -115,7 +115,7 @@
* Stephen Rothwell <sfr@linuxcare.com>, June, 2000.
*/
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/file.h>
#include <linux/smp_lock.h>
#include <linux/init.h>
diff --git a/fs/minix/inode.c b/fs/minix/inode.c
index 7ff0b7bd9ee7..d30699826368 100644
--- a/fs/minix/inode.c
+++ b/fs/minix/inode.c
@@ -14,7 +14,7 @@
#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/stat.h>
#include <linux/locks.h>
diff --git a/fs/ncpfs/dir.c b/fs/ncpfs/dir.c
index c16d93614d55..92d0aaba15e2 100644
--- a/fs/ncpfs/dir.c
+++ b/fs/ncpfs/dir.c
@@ -15,7 +15,7 @@
#include <linux/errno.h>
#include <linux/stat.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/mm.h>
#include <asm/uaccess.h>
diff --git a/fs/ncpfs/file.c b/fs/ncpfs/file.c
index ac4de2b832b3..3bb051f28510 100644
--- a/fs/ncpfs/file.c
+++ b/fs/ncpfs/file.c
@@ -16,7 +16,7 @@
#include <linux/stat.h>
#include <linux/mm.h>
#include <linux/locks.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/ncp_fs.h>
diff --git a/fs/ncpfs/inode.c b/fs/ncpfs/inode.c
index badfc7817430..6cb6e863f2e1 100644
--- a/fs/ncpfs/inode.c
+++ b/fs/ncpfs/inode.c
@@ -24,7 +24,7 @@
#include <linux/locks.h>
#include <linux/file.h>
#include <linux/fcntl.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/init.h>
diff --git a/fs/ncpfs/mmap.c b/fs/ncpfs/mmap.c
index 9261eb453ca8..50f52119de7c 100644
--- a/fs/ncpfs/mmap.c
+++ b/fs/ncpfs/mmap.c
@@ -14,7 +14,7 @@
#include <linux/errno.h>
#include <linux/mman.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
#include <linux/ncp_fs.h>
diff --git a/fs/ncpfs/ncplib_kernel.h b/fs/ncpfs/ncplib_kernel.h
index 162c89b4b4f4..43c1306ac903 100644
--- a/fs/ncpfs/ncplib_kernel.h
+++ b/fs/ncpfs/ncplib_kernel.h
@@ -17,7 +17,7 @@
#include <linux/fs.h>
#include <linux/types.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/fcntl.h>
#include <linux/pagemap.h>
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 564a47b321eb..c3a3a913e02f 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -23,7 +23,7 @@
#include <linux/fcntl.h>
#include <linux/string.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/sunrpc/clnt.h>
#include <linux/nfs_fs.h>
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index 2b3f22777b0f..6f9b324e01cf 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -24,7 +24,7 @@
#include <linux/nfs_fs.h>
#include <linux/nfs_mount.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pagemap.h>
#include <linux/lockd/bind.h>
#include <linux/smp_lock.h>
diff --git a/fs/nfs/flushd.c b/fs/nfs/flushd.c
index 502b490b8d78..601425cffba9 100644
--- a/fs/nfs/flushd.c
+++ b/fs/nfs/flushd.c
@@ -24,7 +24,7 @@
#include <linux/config.h>
#include <linux/types.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pagemap.h>
#include <linux/file.h>
diff --git a/fs/nfs/nfs2xdr.c b/fs/nfs/nfs2xdr.c
index 7fef7da99b81..c24021a6d81a 100644
--- a/fs/nfs/nfs2xdr.c
+++ b/fs/nfs/nfs2xdr.c
@@ -12,7 +12,7 @@
#include <linux/param.h>
#include <linux/sched.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/utsname.h>
#include <linux/errno.h>
#include <linux/string.h>
diff --git a/fs/nfs/nfs3xdr.c b/fs/nfs/nfs3xdr.c
index f6260a552059..ab1110227c55 100644
--- a/fs/nfs/nfs3xdr.c
+++ b/fs/nfs/nfs3xdr.c
@@ -9,7 +9,7 @@
#include <linux/param.h>
#include <linux/sched.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/utsname.h>
#include <linux/errno.h>
#include <linux/string.h>
diff --git a/fs/nfs/proc.c b/fs/nfs/proc.c
index 17bb39f36ca8..e19009ea7e30 100644
--- a/fs/nfs/proc.c
+++ b/fs/nfs/proc.c
@@ -29,7 +29,7 @@
#include <linux/types.h>
#include <linux/param.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/utsname.h>
diff --git a/fs/nfs/read.c b/fs/nfs/read.c
index 211d3a3db0a3..beb7bd8ddda9 100644
--- a/fs/nfs/read.c
+++ b/fs/nfs/read.c
@@ -22,7 +22,7 @@
#include <linux/fcntl.h>
#include <linux/stat.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pagemap.h>
#include <linux/sunrpc/clnt.h>
#include <linux/nfs_fs.h>
diff --git a/fs/nfs/symlink.c b/fs/nfs/symlink.c
index eba7a859a750..4350cf8e73e8 100644
--- a/fs/nfs/symlink.c
+++ b/fs/nfs/symlink.c
@@ -20,7 +20,7 @@
#include <linux/pagemap.h>
#include <linux/stat.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/smp_lock.h>
diff --git a/fs/nfs/unlink.c b/fs/nfs/unlink.c
index f4abfe7b3796..51150971478c 100644
--- a/fs/nfs/unlink.c
+++ b/fs/nfs/unlink.c
@@ -6,7 +6,7 @@
* NOTE: we rely on holding the BKL for list manipulation protection.
*/
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/dcache.h>
#include <linux/sunrpc/sched.h>
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 8b9a28556905..ac7fe27695c9 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -48,7 +48,7 @@
#include <linux/config.h>
#include <linux/types.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/swap.h>
#include <linux/pagemap.h>
#include <linux/file.h>
diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c
index 2beed5cf91b3..3db60bcc2d8a 100644
--- a/fs/nfsd/export.c
+++ b/fs/nfsd/export.c
@@ -15,7 +15,7 @@
*/
#include <linux/unistd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/in.h>
diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c
index a513bfbe052e..8051b15f8c90 100644
--- a/fs/nfsd/nfs3proc.c
+++ b/fs/nfsd/nfs3proc.c
@@ -18,7 +18,7 @@
#include <linux/in.h>
#include <linux/version.h>
#include <linux/unistd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/major.h>
#include <linux/sunrpc/svc.h>
diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c
index 8a061ebcbed4..b13a8a3a725d 100644
--- a/fs/nfsd/nfscache.c
+++ b/fs/nfsd/nfscache.c
@@ -12,7 +12,7 @@
#include <linux/kernel.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/sunrpc/svc.h>
diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
index 7a80fe990e01..7641c5b5252c 100644
--- a/fs/nfsd/nfsctl.c
+++ b/fs/nfsd/nfsctl.c
@@ -18,7 +18,7 @@
#include <linux/net.h>
#include <linux/in.h>
#include <linux/unistd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/proc_fs.h>
#include <linux/nfs.h>
diff --git a/fs/nfsd/nfsfh.c b/fs/nfsd/nfsfh.c
index 78c729c0941e..6e2c98a557a4 100644
--- a/fs/nfsd/nfsfh.c
+++ b/fs/nfsd/nfsfh.c
@@ -9,7 +9,7 @@
*/
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fs.h>
#include <linux/unistd.h>
#include <linux/string.h>
@@ -454,6 +454,7 @@ find_fh_dentry(struct super_block *sb, ino_t ino, int generation, ino_t dirino,
if (tmp != dentry) {
/* we lost a race, try again
*/
+ dput(pdentry);
dput(tmp);
dput(dentry);
dput(result); /* this will discard the whole free path, so we can up the semaphore */
diff --git a/fs/nfsd/nfsproc.c b/fs/nfsd/nfsproc.c
index b5057d57b5f4..303792b58536 100644
--- a/fs/nfsd/nfsproc.c
+++ b/fs/nfsd/nfsproc.c
@@ -18,7 +18,7 @@
#include <linux/in.h>
#include <linux/version.h>
#include <linux/unistd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sunrpc/svc.h>
#include <linux/nfsd/nfsd.h>
@@ -252,8 +252,19 @@ nfsd_proc_create(struct svc_rqst *rqstp, struct nfsd_createargs *argp,
if (attr->ia_valid & ATTR_MODE) {
type = attr->ia_mode & S_IFMT;
mode = attr->ia_mode & ~S_IFMT;
- if (!type) /* HP weirdness */
- type = S_IFREG;
+ if (!type) {
+ /* no type, so if target exists, assume same as that,
+ * else assume a file */
+ if (inode) {
+ type = inode->i_mode & S_IFMT;
+ if (type == S_IFCHR || type == S_IFBLK) {
+ /* reserve rdev for later checking */
+ attr->ia_size = inode->i_rdev;
+ attr->ia_valid |= ATTR_SIZE;
+ }
+ } else
+ type = S_IFREG;
+ }
} else if (inode) {
type = inode->i_mode & S_IFMT;
mode = inode->i_mode & ~S_IFMT;
diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
index a4a642c447dc..0537c06d7af6 100644
--- a/fs/nfsd/nfssvc.c
+++ b/fs/nfsd/nfssvc.c
@@ -19,7 +19,7 @@
#include <linux/uio.h>
#include <linux/version.h>
#include <linux/unistd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp.h>
#include <linux/smp_lock.h>
diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c
index fcbddc5ed776..7bcc37c413f3 100644
--- a/fs/nfsd/nfsxdr.c
+++ b/fs/nfsd/nfsxdr.c
@@ -26,7 +26,7 @@
* Mapping of S_IF* types to NFS file types
*/
static u32 nfs_ftypes[] = {
- NFNON, NFFIFO, NFCHR, NFBAD,
+ NFNON, NFCHR, NFCHR, NFBAD,
NFDIR, NFBAD, NFBLK, NFBAD,
NFREG, NFBAD, NFLNK, NFBAD,
NFSOCK, NFBAD, NFLNK, NFBAD,
@@ -136,20 +136,25 @@ decode_sattr(u32 *p, struct iattr *iap)
static inline u32 *
encode_fattr(struct svc_rqst *rqstp, u32 *p, struct inode *inode)
{
+ int type = (inode->i_mode & S_IFMT);
if (!inode)
return 0;
- *p++ = htonl(nfs_ftypes[(inode->i_mode & S_IFMT) >> 12]);
+ *p++ = htonl(nfs_ftypes[type >> 12]);
*p++ = htonl((u32) inode->i_mode);
*p++ = htonl((u32) inode->i_nlink);
*p++ = htonl((u32) nfsd_ruid(rqstp, inode->i_uid));
*p++ = htonl((u32) nfsd_rgid(rqstp, inode->i_gid));
- if (S_ISLNK(inode->i_mode) && inode->i_size > NFS_MAXPATHLEN) {
+
+ if (S_ISLNK(type) && inode->i_size > NFS_MAXPATHLEN) {
*p++ = htonl(NFS_MAXPATHLEN);
} else {
*p++ = htonl((u32) inode->i_size);
}
*p++ = htonl((u32) inode->i_blksize);
- *p++ = htonl((u32) inode->i_rdev);
+ if (S_ISCHR(type) || S_ISBLK(type))
+ *p++ = htonl((u32) inode->i_rdev);
+ else
+ *p++ = htonl(0xffffffff);
*p++ = htonl((u32) inode->i_blocks);
*p++ = htonl((u32) inode->i_dev);
*p++ = htonl((u32) inode->i_ino);
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
index bd01b57f5c0c..43fc14a4fcbf 100644
--- a/fs/nfsd/vfs.c
+++ b/fs/nfsd/vfs.c
@@ -29,7 +29,7 @@
#include <linux/fcntl.h>
#include <linux/net.h>
#include <linux/unistd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/in.h>
#define __NO_VERSION__
#include <linux/module.h>
diff --git a/fs/nls/nls_base.c b/fs/nls/nls_base.c
index e98d8490c6f0..1db7ffd824b3 100644
--- a/fs/nls/nls_base.c
+++ b/fs/nls/nls_base.c
@@ -13,7 +13,7 @@
#include <linux/string.h>
#include <linux/config.h>
#include <linux/nls.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
#ifdef CONFIG_KMOD
#include <linux/kmod.h>
diff --git a/fs/open.c b/fs/open.c
index 309aa0667994..c6b8f7b89c58 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -13,6 +13,7 @@
#include <linux/dnotify.h>
#include <linux/module.h>
#include <linux/slab.h>
+#include <linux/tty.h>
#include <asm/uaccess.h>
diff --git a/fs/openpromfs/inode.c b/fs/openpromfs/inode.c
index e264dd3d3a28..6c8912cb194d 100644
--- a/fs/openpromfs/inode.c
+++ b/fs/openpromfs/inode.c
@@ -12,7 +12,7 @@
#include <linux/openprom_fs.h>
#include <linux/locks.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <asm/openprom.h>
diff --git a/fs/pipe.c b/fs/pipe.c
index c7f27a520a2f..94aa78853268 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -7,11 +7,12 @@
#include <linux/mm.h>
#include <linux/file.h>
#include <linux/poll.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/module.h>
#include <linux/init.h>
#include <asm/uaccess.h>
+#include <asm/ioctls.h>
/*
* We use a start+len construction, which provides full use of the
diff --git a/fs/qnx4/inode.c b/fs/qnx4/inode.c
index c40f488e5704..490c3d047ed0 100644
--- a/fs/qnx4/inode.c
+++ b/fs/qnx4/inode.c
@@ -17,7 +17,7 @@
#include <linux/types.h>
#include <linux/string.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/qnx4_fs.h>
#include <linux/fs.h>
#include <linux/locks.h>
diff --git a/fs/qnx4/truncate.c b/fs/qnx4/truncate.c
index a25bf1daff7d..9dad91a173ad 100644
--- a/fs/qnx4/truncate.c
+++ b/fs/qnx4/truncate.c
@@ -13,7 +13,7 @@
#include <linux/config.h>
#include <linux/types.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/qnx4_fs.h>
#include <linux/fs.h>
#include <linux/locks.h>
diff --git a/fs/read_write.c b/fs/read_write.c
index 00b0daf7e4b2..2d264640c901 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -4,7 +4,7 @@
* Copyright (C) 1991, 1992 Linus Torvalds
*/
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/fcntl.h>
#include <linux/file.h>
diff --git a/fs/romfs/inode.c b/fs/romfs/inode.c
index 76c811852d98..7edadf2aca24 100644
--- a/fs/romfs/inode.c
+++ b/fs/romfs/inode.c
@@ -67,7 +67,7 @@
#include <linux/module.h>
#include <linux/types.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/romfs_fs.h>
#include <linux/fs.h>
#include <linux/locks.h>
diff --git a/fs/select.c b/fs/select.c
index 975013e7f809..cf7459d3edfd 100644
--- a/fs/select.c
+++ b/fs/select.c
@@ -14,7 +14,7 @@
* of fds to overcome nfds < 16390 descriptors limit (Tigran Aivazian).
*/
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/poll.h>
#include <linux/file.h>
diff --git a/fs/smbfs/file.c b/fs/smbfs/file.c
index 0a95735fddc3..ac48abc8e9f1 100644
--- a/fs/smbfs/file.c
+++ b/fs/smbfs/file.c
@@ -13,7 +13,7 @@
#include <linux/fcntl.h>
#include <linux/stat.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pagemap.h>
#include <linux/smp_lock.h>
diff --git a/fs/smbfs/inode.c b/fs/smbfs/inode.c
index e502fb60b0e6..ac5f498088de 100644
--- a/fs/smbfs/inode.c
+++ b/fs/smbfs/inode.c
@@ -16,7 +16,7 @@
#include <linux/stat.h>
#include <linux/errno.h>
#include <linux/locks.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/file.h>
#include <linux/dcache.h>
diff --git a/fs/smbfs/proc.c b/fs/smbfs/proc.c
index f0444f97d7d4..3f21086fc73e 100644
--- a/fs/smbfs/proc.c
+++ b/fs/smbfs/proc.c
@@ -9,7 +9,7 @@
#include <linux/types.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fs.h>
#include <linux/file.h>
#include <linux/stat.h>
diff --git a/fs/super.c b/fs/super.c
index 6262c76754a9..6482259ce233 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -22,12 +22,13 @@
#include <linux/config.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/locks.h>
#include <linux/smp_lock.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/fd.h>
#include <linux/init.h>
+#include <linux/major.h>
#include <linux/quotaops.h>
#include <linux/acct.h>
diff --git a/fs/udf/dir.c b/fs/udf/dir.c
index 9ec279e47a62..bf6d9988de48 100644
--- a/fs/udf/dir.c
+++ b/fs/udf/dir.c
@@ -38,7 +38,7 @@
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/udf_fs.h>
#endif
diff --git a/fs/udf/namei.c b/fs/udf/namei.c
index 9cc2f3d29760..c37d298fe372 100644
--- a/fs/udf/namei.c
+++ b/fs/udf/namei.c
@@ -31,7 +31,7 @@
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/quotaops.h>
#include <linux/udf_fs.h>
diff --git a/fs/udf/partition.c b/fs/udf/partition.c
index dcdf7666c022..a2c34d518b15 100644
--- a/fs/udf/partition.c
+++ b/fs/udf/partition.c
@@ -30,7 +30,7 @@
#include <linux/fs.h>
#include <linux/string.h>
#include <linux/udf_fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
inline Uint32 udf_get_pblock(struct super_block *sb, Uint32 block, Uint16 partition, Uint32 offset)
{
diff --git a/fs/udf/super.c b/fs/udf/super.c
index f5e9b0b446d8..1e089c0b1271 100644
--- a/fs/udf/super.c
+++ b/fs/udf/super.c
@@ -48,7 +48,7 @@
#include <linux/config.h>
#include <linux/version.h>
#include <linux/blkdev.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/kernel.h>
#include <linux/locks.h>
#include <linux/module.h>
diff --git a/fs/udf/symlink.c b/fs/udf/symlink.c
index be4e80165eb0..caa2b72664f1 100644
--- a/fs/udf/symlink.c
+++ b/fs/udf/symlink.c
@@ -32,7 +32,7 @@
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/stat.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pagemap.h>
#include <linux/smp_lock.h>
#include "udf_i.h"
diff --git a/fs/ufs/super.c b/fs/ufs/super.c
index 6d83d7c51863..3602915135d3 100644
--- a/fs/ufs/super.c
+++ b/fs/ufs/super.c
@@ -73,7 +73,7 @@
#include <linux/errno.h>
#include <linux/fs.h>
#include <linux/ufs_fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/stat.h>
#include <linux/string.h>
diff --git a/fs/ufs/util.c b/fs/ufs/util.c
index 334e0efdb4ea..54a0ab80f59a 100644
--- a/fs/ufs/util.c
+++ b/fs/ufs/util.c
@@ -7,7 +7,7 @@
*/
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/locks.h>
#include "swab.h"
diff --git a/fs/umsdos/dir.c b/fs/umsdos/dir.c
index 2e0b7bb14767..c4f28da7770d 100644
--- a/fs/umsdos/dir.c
+++ b/fs/umsdos/dir.c
@@ -15,7 +15,7 @@
#include <linux/stat.h>
#include <linux/limits.h>
#include <linux/umsdos_fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pagemap.h>
#define UMSDOS_SPECIAL_DIRFPOS 3
diff --git a/fs/umsdos/namei.c b/fs/umsdos/namei.c
index c29387f3c759..560d3f5cd4e5 100644
--- a/fs/umsdos/namei.c
+++ b/fs/umsdos/namei.c
@@ -20,7 +20,7 @@
#include <linux/string.h>
#include <linux/msdos_fs.h>
#include <linux/umsdos_fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#define UMSDOS_DIR_LOCK
diff --git a/fs/umsdos/rdir.c b/fs/umsdos/rdir.c
index ff208e6ac253..e107a95f5002 100644
--- a/fs/umsdos/rdir.c
+++ b/fs/umsdos/rdir.c
@@ -14,7 +14,7 @@
#include <linux/stat.h>
#include <linux/limits.h>
#include <linux/umsdos_fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/uaccess.h>
diff --git a/fs/vfat/namei.c b/fs/vfat/namei.c
index 35c6529bec11..b8f8d6e1b11f 100644
--- a/fs/vfat/namei.c
+++ b/fs/vfat/namei.c
@@ -24,7 +24,7 @@
#include <linux/ctype.h>
#include <linux/stat.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include "../fat/msbuffer.h"
diff --git a/include/asm-alpha/errno.h b/include/asm-alpha/errno.h
index fd5b8fafc6f0..724f03b77fd0 100644
--- a/include/asm-alpha/errno.h
+++ b/include/asm-alpha/errno.h
@@ -139,6 +139,4 @@
#define ENOMEDIUM 129 /* No medium found */
#define EMEDIUMTYPE 130 /* Wrong medium type */
-#define EHASHCOLLISION 131 /* Number of hash collisons exceeds maximum generation counter value. */
-
#endif
diff --git a/include/asm-i386/errno.h b/include/asm-i386/errno.h
index d22c4472b045..7cf599f4de50 100644
--- a/include/asm-i386/errno.h
+++ b/include/asm-i386/errno.h
@@ -128,6 +128,5 @@
#define ENOMEDIUM 123 /* No medium found */
#define EMEDIUMTYPE 124 /* Wrong medium type */
-#define EHASHCOLLISION 125 /* Number of hash collisons exceeds maximum generation counter value. */
#endif
diff --git a/include/asm-m68k/errno.h b/include/asm-m68k/errno.h
index 8d309d38ec70..1ee6485abd22 100644
--- a/include/asm-m68k/errno.h
+++ b/include/asm-m68k/errno.h
@@ -129,6 +129,4 @@
#define ENOMEDIUM 123 /* No medium found */
#define EMEDIUMTYPE 124 /* Wrong medium type */
-#define EHASHCOLLISION 125 /* Number of hash collisons exceeds maximum generation counter value. */
-
#endif /* _M68K_ERRNO_H */
diff --git a/include/asm-sparc/termios.h b/include/asm-sparc/termios.h
index 9d076f724fd7..a05f65856228 100644
--- a/include/asm-sparc/termios.h
+++ b/include/asm-sparc/termios.h
@@ -1,4 +1,4 @@
-/* $Id: termios.h,v 1.30 1999/12/02 09:57:46 davem Exp $ */
+/* $Id: termios.h,v 1.31 2001/02/05 05:54:29 davem Exp $ */
#ifndef _SPARC_TERMIOS_H
#define _SPARC_TERMIOS_H
diff --git a/include/asm-sparc64/termios.h b/include/asm-sparc64/termios.h
index ebc5dd3ebce5..082b57ac7c17 100644
--- a/include/asm-sparc64/termios.h
+++ b/include/asm-sparc64/termios.h
@@ -1,4 +1,4 @@
-/* $Id: termios.h,v 1.9 1999/12/02 09:57:53 davem Exp $ */
+/* $Id: termios.h,v 1.10 2001/02/05 05:54:29 davem Exp $ */
#ifndef _SPARC64_TERMIOS_H
#define _SPARC64_TERMIOS_H
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 4fce3f847249..f5bfb4eacc32 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -82,13 +82,11 @@ typedef int acpi_dstate_t;
/* PM_TMR masks */
#define ACPI_TMR_VAL_EXT 0x00000100
#define ACPI_TMR_MASK 0x00ffffff
-#define ACPI_TMR_HZ 3580000 /* 3.58 MHz */
+#define ACPI_TMR_HZ 3579545 /* 3.58 MHz */
+#define ACPI_TMR_KHZ (ACPI_TMR_HZ / 1000)
-/* strangess to avoid integer overflow */
#define ACPI_MICROSEC_TO_TMR_TICKS(val) \
- (((val) * (ACPI_TMR_HZ / 10000)) / 100)
-#define ACPI_TMR_TICKS_TO_MICROSEC(ticks) \
- (((ticks) * 100) / (ACPI_TMR_HZ / 10000))
+ (((val) * (ACPI_TMR_KHZ)) / 1000)
/* PM2_CNT flags */
#define ACPI_ARB_DIS 0x01
@@ -147,6 +145,9 @@ enum
ACPI_C1_TIME,
ACPI_C2_TIME,
ACPI_C3_TIME,
+ ACPI_C1_COUNT,
+ ACPI_C2_COUNT,
+ ACPI_C3_COUNT,
ACPI_S0_SLP_TYP,
ACPI_S1_SLP_TYP,
ACPI_S5_SLP_TYP,
diff --git a/include/linux/coda_linux.h b/include/linux/coda_linux.h
index f5e795919e4e..de20ba7c3652 100644
--- a/include/linux/coda_linux.h
+++ b/include/linux/coda_linux.h
@@ -17,7 +17,7 @@
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/vmalloc.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/wait.h>
#include <linux/types.h>
#include <linux/fs.h>
diff --git a/include/linux/elevator.h b/include/linux/elevator.h
index 9e9b27dfa07e..9071feeaee2f 100644
--- a/include/linux/elevator.h
+++ b/include/linux/elevator.h
@@ -1,8 +1,6 @@
#ifndef _LINUX_ELEVATOR_H
#define _LINUX_ELEVATOR_H
-#define ELEVATOR_DEBUG
-
typedef void (elevator_fn) (struct request *, elevator_t *,
struct list_head *,
struct list_head *, int);
@@ -68,8 +66,9 @@ extern void elevator_init(elevator_t *, elevator_t);
(s1)->rq_dev < (s2)->rq_dev)
#define BHRQ_IN_ORDER(bh, rq) \
- (((bh)->b_rdev == (rq)->rq_dev && \
- (bh)->b_rsector < (rq)->sector))
+ ((((bh)->b_rdev == (rq)->rq_dev && \
+ (bh)->b_rsector < (rq)->sector)) || \
+ (bh)->b_rdev < (rq)->rq_dev)
static inline int elevator_request_latency(elevator_t * elevator, int rw)
{
diff --git a/include/linux/hfs_sysdep.h b/include/linux/hfs_sysdep.h
index cefce233dc79..8239b482cc91 100644
--- a/include/linux/hfs_sysdep.h
+++ b/include/linux/hfs_sysdep.h
@@ -17,7 +17,7 @@
#ifndef _HFS_SYSDEP_H
#define _HFS_SYSDEP_H
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/types.h>
#include <linux/locks.h>
#include <linux/fs.h>
diff --git a/include/linux/highmem.h b/include/linux/highmem.h
index eb5405d336de..de8eea018272 100644
--- a/include/linux/highmem.h
+++ b/include/linux/highmem.h
@@ -38,7 +38,7 @@ static inline void *kmap(struct page *page) { return page_address(page); }
#define kunmap_atomic(page,idx) kunmap(page)
#define bh_kmap(bh) ((bh)->b_data)
-#define bh_kunmap(bh) do { } while (0);
+#define bh_kunmap(bh) do { } while (0)
#endif /* CONFIG_HIGHMEM */
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index 9d214fadc8c8..cba5d1601572 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -146,7 +146,7 @@ extern struct tasklet_head tasklet_hi_vec[NR_CPUS];
#ifdef CONFIG_SMP
#define tasklet_trylock(t) (!test_and_set_bit(TASKLET_STATE_RUN, &(t)->state))
-#define tasklet_unlock_wait(t) while (test_bit(TASKLET_STATE_RUN, &(t)->state)) { /* NOTHING */ }
+#define tasklet_unlock_wait(t) while (test_bit(TASKLET_STATE_RUN, &(t)->state)) { barrier(); }
#define tasklet_unlock(t) clear_bit(TASKLET_STATE_RUN, &(t)->state)
#else
#define tasklet_trylock(t) 1
diff --git a/include/linux/isdn.h b/include/linux/isdn.h
index c8c807068ec7..8397578f6280 100644
--- a/include/linux/isdn.h
+++ b/include/linux/isdn.h
@@ -196,7 +196,7 @@ typedef struct {
#include <asm/io.h>
#include <linux/kernel.h>
#include <linux/signal.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/timer.h>
#include <linux/wait.h>
#include <linux/tty.h>
diff --git a/include/linux/mtd/map.h b/include/linux/mtd/map.h
index e8d101049ddb..71fc46b1a7fa 100644
--- a/include/linux/mtd/map.h
+++ b/include/linux/mtd/map.h
@@ -8,7 +8,7 @@
#include <linux/config.h>
#include <linux/types.h>
#include <linux/mtd/mtd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
/* The map stuff is very simple. You fill in your struct map_info with
a handful of routines for accessing the device, making sure they handle
diff --git a/include/linux/ncp_fs.h b/include/linux/ncp_fs.h
index 7d67f410b1e0..919fc654a155 100644
--- a/include/linux/ncp_fs.h
+++ b/include/linux/ncp_fs.h
@@ -196,7 +196,7 @@ struct ncp_entry_info {
#ifdef DEBUG_NCP_MALLOC
-#include <linux/malloc.h>
+#include <linux/slab.h>
extern int ncp_malloced;
extern int ncp_current_malloced;
diff --git a/include/linux/pci.h b/include/linux/pci.h
index a78410716707..205abe61e428 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -565,9 +565,9 @@ static inline int pcibios_find_class (unsigned int class_code, unsigned short in
{ return PCIBIOS_DEVICE_NOT_FOUND; }
#define _PCI_NOP(o,s,t) \
- static inline int pcibios_##o##_config_##s## (u8 bus, u8 dfn, u8 where, t val) \
+ static inline int pcibios_##o##_config_##s (u8 bus, u8 dfn, u8 where, t val) \
{ return PCIBIOS_FUNC_NOT_SUPPORTED; } \
- static inline int pci_##o##_config_##s## (struct pci_dev *dev, int where, t val) \
+ static inline int pci_##o##_config_##s (struct pci_dev *dev, int where, t val) \
{ return PCIBIOS_FUNC_NOT_SUPPORTED; }
#define _PCI_NOP_ALL(o,x) _PCI_NOP(o,byte,u8 x) \
_PCI_NOP(o,word,u16 x) \
diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h
index da8f6b3dc0e0..e142bb812a6e 100644
--- a/include/linux/proc_fs.h
+++ b/include/linux/proc_fs.h
@@ -2,7 +2,7 @@
#define _LINUX_PROC_FS_H
#include <linux/config.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
/*
* The proc filesystem constants/structures
diff --git a/include/linux/raid/raid5.h b/include/linux/raid/raid5.h
index d46dbd51264e..93a81473ef33 100644
--- a/include/linux/raid/raid5.h
+++ b/include/linux/raid/raid5.h
@@ -57,9 +57,9 @@
*
* Buffers for the md device that arrive via make_request are attached
* to the appropriate stripe in one of two lists linked on b_reqnext.
- * One list for read requests, one for write. There should never be
- * more than one buffer on the two lists together, but we are not
- * guaranteed of that so we allow for more.
+ * One list (bh_read) for read requests, one (bh_write) for write.
+ * There should never be more than one buffer on the two lists
+ * together, but we are not guaranteed of that so we allow for more.
*
* If a buffer is on the read list when the associated cache buffer is
* Uptodate, the data is copied into the read buffer and it's b_end_io
@@ -70,16 +70,18 @@
* that the Uptodate bit is set. Once they have checked that they may
* take buffers off the read queue.
*
- * When a buffer on the write_list is committed for write, it is
- * marked clean, copied into the cache buffer, which is then marked
- * dirty, and moved onto a third list, the written list. Once both
- * the parity block and the cached buffer are successfully written,
- * any buffer on a written list can be returned with b_end_io.
- *
- * The write_list and read_list lists act as fifos. They are protected by the
- * device_lock which can be claimed when a stripe_lock is held.
- * The device_lock is only for list manipulations and will only be held for a very
- * short time. It can be claimed from interrupts.
+ * When a buffer on the write list is committed for write is it copied
+ * into the cache buffer, which is then marked dirty, and moved onto a
+ * third list, the written list (bh_written). Once both the parity
+ * block and the cached buffer are successfully written, any buffer on
+ * a written list can be returned with b_end_io.
+ *
+ * The write list and read list both act as fifos. The read list is
+ * protected by the device_lock. The write and written lists are
+ * protected by the stripe lock. The device_lock, which can be
+ * claimed while the stipe lock is held, is only for list
+ * manipulations and will only be held for a very short time. It can
+ * be claimed from interrupts.
*
*
* Stripes in the stripe cache can be on one of two lists (or on
diff --git a/include/linux/reiserfs_fs.h b/include/linux/reiserfs_fs.h
index 277281d6d7b4..97dbc003473b 100644
--- a/include/linux/reiserfs_fs.h
+++ b/include/linux/reiserfs_fs.h
@@ -15,7 +15,7 @@
#include <linux/types.h>
#ifdef __KERNEL__
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/tqueue.h>
#endif
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 17e48d0e937e..0213728a6d5b 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -153,7 +153,7 @@ struct sk_buff {
/*
* Handling routines are only of interest to the kernel
*/
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/system.h>
diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h
index 804f34927760..3b84c5bff809 100644
--- a/include/net/ip_fib.h
+++ b/include/net/ip_fib.h
@@ -276,4 +276,4 @@ static inline void fib_res_put(struct fib_result *res)
}
-#endif _NET_FIB_H
+#endif /* _NET_FIB_H */
diff --git a/ipc/msg.c b/ipc/msg.c
index de2c406b975d..41f7dbcbe882 100644
--- a/ipc/msg.c
+++ b/ipc/msg.c
@@ -16,7 +16,7 @@
*/
#include <linux/config.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/msg.h>
#include <linux/spinlock.h>
#include <linux/init.h>
diff --git a/ipc/sem.c b/ipc/sem.c
index 203418a8abb4..0ef4113ccba0 100644
--- a/ipc/sem.c
+++ b/ipc/sem.c
@@ -56,7 +56,7 @@
*/
#include <linux/config.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/spinlock.h>
#include <linux/init.h>
#include <linux/proc_fs.h>
diff --git a/ipc/shm.c b/ipc/shm.c
index 71e22cd58d29..b6558a8b5c93 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -16,7 +16,7 @@
*/
#include <linux/config.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/shm.h>
#include <linux/init.h>
#include <linux/file.h>
diff --git a/ipc/util.c b/ipc/util.c
index 6e1158be2842..b891e7775ac5 100644
--- a/ipc/util.c
+++ b/ipc/util.c
@@ -17,7 +17,7 @@
#include <linux/msg.h>
#include <linux/smp_lock.h>
#include <linux/vmalloc.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/highuid.h>
#if defined(CONFIG_SYSVIPC)
diff --git a/kernel/acct.c b/kernel/acct.c
index e2e8826fa6fd..a836dd1a6f7a 100644
--- a/kernel/acct.c
+++ b/kernel/acct.c
@@ -53,6 +53,7 @@
#include <linux/acct.h>
#include <linux/smp_lock.h>
#include <linux/file.h>
+#include <linux/tty.h>
#include <asm/uaccess.h>
diff --git a/kernel/exit.c b/kernel/exit.c
index c747f547b182..73db5d094acd 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -5,10 +5,11 @@
*/
#include <linux/config.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/smp_lock.h>
#include <linux/module.h>
+#include <linux/tty.h>
#ifdef CONFIG_BSD_PROCESS_ACCT
#include <linux/acct.h>
#endif
diff --git a/kernel/fork.c b/kernel/fork.c
index e578a9644379..6f0582cbf44b 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -12,7 +12,7 @@
*/
#include <linux/config.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/unistd.h>
#include <linux/smp_lock.h>
diff --git a/kernel/ksyms.c b/kernel/ksyms.c
index f362615000f5..ca9001dbeaed 100644
--- a/kernel/ksyms.c
+++ b/kernel/ksyms.c
@@ -10,7 +10,7 @@
*/
#include <linux/config.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/module.h>
#include <linux/blkdev.h>
#include <linux/cdrom.h>
@@ -45,6 +45,7 @@
#include <linux/highuid.h>
#include <linux/brlock.h>
#include <linux/fs.h>
+#include <linux/tty.h>
#if defined(CONFIG_PROC_FS)
#include <linux/proc_fs.h>
diff --git a/kernel/resource.c b/kernel/resource.c
index b553eb0ff2e9..11736887486d 100644
--- a/kernel/resource.c
+++ b/kernel/resource.c
@@ -11,7 +11,7 @@
#include <linux/errno.h>
#include <linux/ioport.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/spinlock.h>
#include <asm/io.h>
diff --git a/kernel/sched.c b/kernel/sched.c
index 1df69dab41b4..b6f6c879a1a4 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -1115,11 +1115,11 @@ static void show_task(struct task_struct * p)
else
printk("\n");
-#ifdef CONFIG_X86
-/* This is very useful, but only works on x86 right now */
+#if defined(CONFIG_X86) || defined(CONFIG_SPARC64)
+/* This is very useful, but only works on x86 and sparc64 right now */
{
- extern void show_trace(unsigned long);
- show_trace(p->thread.esp);
+ extern void show_trace_task(struct task_struct *tsk);
+ show_trace_task(p);
}
#endif
}
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 95fc9e9fb7bc..96f46ecb7727 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -19,7 +19,7 @@
*/
#include <linux/config.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sysctl.h>
#include <linux/swapctl.h>
#include <linux/proc_fs.h>
diff --git a/mm/filemap.c b/mm/filemap.c
index 4c89ad3e9156..7c64c5a05229 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -9,7 +9,7 @@
* most "normal" filesystems (but you don't /have/ to use this:
* the NFS filesystem used to do this differently, for example)
*/
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/shm.h>
#include <linux/mman.h>
#include <linux/locks.h>
@@ -397,7 +397,7 @@ int generic_buffer_fdatasync(struct inode *inode, unsigned long start_idx, unsig
retval |= do_buffer_fdatasync(&inode->i_mapping->locked_pages, start_idx, end_idx, writeout_one_page);
/* now wait for locked buffers on pages from both clean and dirty lists */
- retval |= do_buffer_fdatasync(&inode->i_mapping->dirty_pages, start_idx, end_idx, writeout_one_page);
+ retval |= do_buffer_fdatasync(&inode->i_mapping->dirty_pages, start_idx, end_idx, waitfor_one_page);
retval |= do_buffer_fdatasync(&inode->i_mapping->clean_pages, start_idx, end_idx, waitfor_one_page);
retval |= do_buffer_fdatasync(&inode->i_mapping->locked_pages, start_idx, end_idx, waitfor_one_page);
diff --git a/mm/swapfile.c b/mm/swapfile.c
index 57f815638752..f02800bc6586 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -5,7 +5,7 @@
* Swap reorganised 29.12.95, Stephen Tweedie
*/
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/kernel_stat.h>
#include <linux/swap.h>
diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index 93edab662caa..ab74d114bebf 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -6,7 +6,7 @@
* SMP-safe vmalloc/vfree/ioremap, Tigran Aivazian <tigran@veritas.com>, May 2000
*/
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/spinlock.h>
#include <linux/highmem.h>
diff --git a/net/802/cl2llc.c b/net/802/cl2llc.c
index 8d236b4c4bf1..c8cce10e9935 100644
--- a/net/802/cl2llc.c
+++ b/net/802/cl2llc.c
@@ -28,7 +28,7 @@
#include <linux/types.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/netdevice.h>
#include <linux/skbuff.h>
#include <net/p8022.h>
@@ -96,7 +96,7 @@ int llc_data_request(llcptr lp, struct sk_buff *skb)
else
llc_interpret_pseudo_code(lp, REJECT1, skb, NO_FRAME);
break;
- default:
+ default:;
}
if(lp->llc_callbacks)
{
@@ -497,7 +497,7 @@ void llc_interpret_pseudo_code(llcptr lp, int pc_label, struct sk_buff *skb,
else
lp->f_flag = fr->i_hdr.i_pflag;
break;
- default:
+ default:;
}
pc++;
}
diff --git a/net/802/llc_macinit.c b/net/802/llc_macinit.c
index 987d8a5c450b..3b6dc3478a9b 100644
--- a/net/802/llc_macinit.c
+++ b/net/802/llc_macinit.c
@@ -24,7 +24,7 @@
#include <linux/module.h>
#include <linux/version.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/unistd.h>
#include <linux/string.h>
#include <linux/netdevice.h>
@@ -125,7 +125,7 @@ int llc_mac_data_indicate(llcptr lp, struct sk_buff *skb)
free=0;
break;
- default:
+ default:;
/*
* All other type 1 pdus ignored for now
*/
diff --git a/net/802/llc_sendpdu.c b/net/802/llc_sendpdu.c
index f0c6d116ee64..924a9cc6081b 100644
--- a/net/802/llc_sendpdu.c
+++ b/net/802/llc_sendpdu.c
@@ -19,7 +19,7 @@
#include <linux/types.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/netdevice.h>
#include <linux/skbuff.h>
#include <net/p8022.h>
diff --git a/net/Changes b/net/Changes
deleted file mode 100644
index 3e88ee85f0a4..000000000000
--- a/net/Changes
+++ /dev/null
@@ -1,44 +0,0 @@
---------------- Things That Need Doing Before 2.2 ------------------
-
-o insw_and_csum
-
--------------------------- Bugs to fix ------------------------------
-
-o Should unix domain connect never block ?
-o Screend loadable firewall module
-o Remove kernel RARP and replace with user mode daemon.
-o Merge ARM half word trap fixes for ethernet headers
-o Stop route addition to downed interfaces
-o Make sure route add window functionality is back or documented
- equivalences are clear
-o Merge ATM
-o Merge IRDA
-
-Possible projects for victim^H^H^H^H^Holunteers
-
-9. Implementing streams. Not as a blind slow SYS5.4 style copy but actually
-working out how to do it so it runs like greased lightning. Quite a big
-problem. [See the LiS project]
-
-11. IP over SCSI. [worked on]
-
-14. Bidirectional PLIP. Also PLIP for the newer style parallel ports.
-
-15. 802.2LLC and thus Netbeui sockets. Becoming less important since the
-rumour is microsoft are phasing out netbeui for netbios/IP. Microsoft have
-gone for netbios/funny-ipx-variant it seems in Win95, but TCP is selectable.
-
-17. PPP multilink. Another nasty job.
-
-19. IPv4 IP-AH and IP-ESP.
-
-20. (userspace) GUI interface to the bandwidth allocators so mere
- mortals can do this
-
-
-BTW: Don't let the magic words 'kernel programming' worry you. Its like DOS
-- you make a mistake you have to reboot. You do at least get dumps and a
-kernel logger that is reliable. There is now a loadable module allowing
-use of gdb on the kernel (no breakpoints though!). No magic involved.
-
-Alan
diff --git a/net/Config.in b/net/Config.in
index 4d4f6c373126..96b8ee502d4f 100644
--- a/net/Config.in
+++ b/net/Config.in
@@ -77,15 +77,15 @@ if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
tristate 'WAN router' CONFIG_WAN_ROUTER
bool 'Fast switching (read help!)' CONFIG_NET_FASTROUTE
bool 'Forwarding between high speed interfaces' CONFIG_NET_HW_FLOWCONTROL
- if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
- mainmenu_option next_comment
- comment 'QoS and/or fair queueing'
- bool 'QoS and/or fair queueing (EXPERIMENTAL)' CONFIG_NET_SCHED
- if [ "$CONFIG_NET_SCHED" = "y" ]; then
- source net/sched/Config.in
- fi
-# bool 'Network code profiler' CONFIG_NET_PROFILE
- endmenu
- fi
fi
+
+mainmenu_option next_comment
+comment 'QoS and/or fair queueing'
+bool 'QoS and/or fair queueing (EXPERIMENTAL)' CONFIG_NET_SCHED
+if [ "$CONFIG_NET_SCHED" = "y" ]; then
+ source net/sched/Config.in
+fi
+#bool 'Network code profiler' CONFIG_NET_PROFILE
+endmenu
+
endmenu
diff --git a/net/appletalk/Makefile b/net/appletalk/Makefile
index 99e57580a934..e8e2c8f8a9c8 100644
--- a/net/appletalk/Makefile
+++ b/net/appletalk/Makefile
@@ -18,5 +18,3 @@ obj-$(CONFIG_SYSCTL) += sysctl_net_atalk.o
include $(TOPDIR)/Rules.make
-tar:
- tar -cvf /dev/f1 .
diff --git a/net/atm/common.c b/net/atm/common.c
index b2bd5a624a18..e566554ee27a 100644
--- a/net/atm/common.c
+++ b/net/atm/common.c
@@ -26,6 +26,7 @@
#include <asm/uaccess.h>
#include <asm/atomic.h>
#include <asm/poll.h>
+#include <asm/ioctls.h>
#if defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE)
#include <linux/atmlec.h>
@@ -376,6 +377,8 @@ int atm_recvmsg(struct socket *sock,struct msghdr *m,int total_len,
if (error <= 0) return error;
vcc->timestamp = skb->stamp;
eff_len = skb->len > size ? size : skb->len;
+ if (skb->len > size) /* Not fit ? Report it... */
+ m->msg_flags |= MSG_TRUNC;
if (vcc->dev->ops->feedback)
vcc->dev->ops->feedback(vcc,skb,(unsigned long) skb->data,
(unsigned long) buff,eff_len);
diff --git a/net/atm/lec.h b/net/atm/lec.h
index 5dd0494e9e07..0ebd861c4198 100644
--- a/net/atm/lec.h
+++ b/net/atm/lec.h
@@ -72,7 +72,7 @@ struct atm_lane_ops {
* 2. LLC Data frames whose total length, including LLC field and data,
* but not padding required to meet the minimum data frame length,
* is less than 1536(0x0600) MUST be encoded by placing that length
- * in the the h_type field. The LLC field follows header immediatelly.
+ * in the h_type field. The LLC field follows header immediatelly.
* 3. LLC data frames longer than this maximum MUST be encoded by placing
* the value 0 in the h_type field.
*
@@ -154,5 +154,5 @@ void lec_push(struct atm_vcc *vcc, struct sk_buff *skb);
void atm_lane_init(void);
void atm_lane_init_ops(struct atm_lane_ops *ops);
-#endif _LEC_H_
+#endif /* _LEC_H_ */
diff --git a/net/ax25/Makefile b/net/ax25/Makefile
index 3791850770a1..5974031f411f 100644
--- a/net/ax25/Makefile
+++ b/net/ax25/Makefile
@@ -23,5 +23,3 @@ obj-$(CONFIG_SYSCTL) += sysctl_net_ax25.o
include $(TOPDIR)/Rules.make
-tar:
- tar -cvf /dev/f1 .
diff --git a/net/ax25/af_ax25.c b/net/ax25/af_ax25.c
index b73b4e5f27b2..4a2684ebec93 100644
--- a/net/ax25/af_ax25.c
+++ b/net/ax25/af_ax25.c
@@ -1782,10 +1782,9 @@ static int ax25_get_info(char *buffer, char **start, off_t offset, int length)
return(len);
}
-static struct net_proto_family ax25_family_ops =
-{
- PF_AX25,
- ax25_create
+static struct net_proto_family ax25_family_ops = {
+ family: PF_AX25,
+ create: ax25_create,
};
static struct proto_ops SOCKOPS_WRAPPED(ax25_proto_ops) = {
@@ -1814,18 +1813,13 @@ SOCKOPS_WRAP(ax25_proto, PF_AX25);
/*
* Called by socket.c on kernel start up
*/
-static struct packet_type ax25_packet_type =
-{
- 0, /* MUTTER ntohs(ETH_P_AX25),*/
- 0, /* copy */
- ax25_kiss_rcv,
- NULL,
- NULL,
+static struct packet_type ax25_packet_type = {
+ type: __constant_htons(ETH_P_AX25),
+ func: ax25_kiss_rcv,
};
static struct notifier_block ax25_dev_notifier = {
- ax25_device_event,
- 0
+ notifier_call: ax25_device_event,
};
EXPORT_SYMBOL(ax25_encapsulate);
@@ -1846,10 +1840,11 @@ EXPORT_SYMBOL(asc2ax);
EXPORT_SYMBOL(null_ax25_address);
EXPORT_SYMBOL(ax25_display_timer);
+static const char banner[] __initdata = KERN_INFO "NET4: G4KLX/GW4PTS AX.25 for Linux. Version 0.37 for Linux NET4.0\n";
+
static int __init ax25_init(void)
{
sock_register(&ax25_family_ops);
- ax25_packet_type.type = htons(ETH_P_AX25);
dev_add_pack(&ax25_packet_type);
register_netdevice_notifier(&ax25_dev_notifier);
ax25_register_sysctl();
@@ -1858,7 +1853,7 @@ static int __init ax25_init(void)
proc_net_create("ax25", 0, ax25_get_info);
proc_net_create("ax25_calls", 0, ax25_uid_get_info);
- printk(KERN_INFO "NET4: G4KLX/GW4PTS AX.25 for Linux. Version 0.37 for Linux NET4.0\n");
+ printk(banner);
return 0;
}
module_init(ax25_init);
@@ -1879,7 +1874,6 @@ static void __exit ax25_exit(void)
ax25_unregister_sysctl();
unregister_netdevice_notifier(&ax25_dev_notifier);
- ax25_packet_type.type = htons(ETH_P_AX25);
dev_remove_pack(&ax25_packet_type);
sock_unregister(PF_AX25);
diff --git a/net/ax25/ax25_in.c b/net/ax25/ax25_in.c
index ed5e6fbcecc6..7c1484d6e912 100644
--- a/net/ax25/ax25_in.c
+++ b/net/ax25/ax25_in.c
@@ -36,6 +36,7 @@
* AX.25 036 Jonathan(G4KLX) Move DAMA code into own file.
* Joerg(DL1BKE) Fixed DAMA Slave.
* AX.25 037 Jonathan(G4KLX) New timer architecture.
+ * Thomas(DL9SAU) Fixed missing initialization of skb->protocol.
*/
#include <linux/config.h>
@@ -158,6 +159,7 @@ int ax25_rx_iframe(ax25_cb *ax25, struct sk_buff *skb)
skb->nh.raw = skb->data;
skb->dev = ax25->ax25_dev->dev;
skb->pkt_type = PACKET_HOST;
+ skb->protocol = htons(ETH_P_IP);
ip_rcv(skb, skb->dev, NULL); /* Wrong ptype */
return 1;
}
@@ -287,6 +289,7 @@ static int ax25_rcv(struct sk_buff *skb, struct net_device *dev, ax25_address *d
skb->nh.raw = skb->data;
skb->dev = dev;
skb->pkt_type = PACKET_HOST;
+ skb->protocol = htons(ETH_P_IP);
ip_rcv(skb, dev, ptype); /* Note ptype here is the wrong one, fix me later */
break;
@@ -296,6 +299,7 @@ static int ax25_rcv(struct sk_buff *skb, struct net_device *dev, ax25_address *d
skb->nh.raw = skb->data;
skb->dev = dev;
skb->pkt_type = PACKET_HOST;
+ skb->protocol = htons(ETH_P_ARP);
arp_rcv(skb, dev, ptype); /* Note ptype here is wrong... */
break;
#endif
diff --git a/net/ax25/sysctl_net_ax25.c b/net/ax25/sysctl_net_ax25.c
index c01ae329c564..e6016f93de43 100644
--- a/net/ax25/sysctl_net_ax25.c
+++ b/net/ax25/sysctl_net_ax25.c
@@ -27,8 +27,8 @@ static int min_ds_timeout[] = {0}, max_ds_timeout[] = {65535 * HZ};
static struct ctl_table_header *ax25_table_header;
-static ctl_table *ax25_table = NULL;
-static int ax25_table_size = 0;
+static ctl_table *ax25_table;
+static int ax25_table_size;
static ctl_table ax25_dir_table[] = {
{NET_AX25, "ax25", NULL, 0, 0555, NULL},
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
index 8fcfe3fe4a99..928e89cdbac8 100644
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -4,7 +4,7 @@
* Authors:
* Lennert Buytenhek <buytenh@gnu.org>
*
- * $Id: br_private.h,v 1.4 2001/01/19 04:51:48 davem Exp $
+ * $Id: br_private.h,v 1.5 2001/02/05 06:03:47 davem Exp $
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -116,83 +116,83 @@ extern struct notifier_block br_device_notifier;
extern unsigned char bridge_ula[6];
/* br.c */
-void br_dec_use_count(void);
-void br_inc_use_count(void);
+extern void br_dec_use_count(void);
+extern void br_inc_use_count(void);
/* br_device.c */
-void br_dev_setup(struct net_device *dev);
+extern void br_dev_setup(struct net_device *dev);
/* br_fdb.c */
-void br_fdb_changeaddr(struct net_bridge_port *p,
+extern void br_fdb_changeaddr(struct net_bridge_port *p,
unsigned char *newaddr);
-void br_fdb_cleanup(struct net_bridge *br);
-void br_fdb_delete_by_port(struct net_bridge *br,
+extern void br_fdb_cleanup(struct net_bridge *br);
+extern void br_fdb_delete_by_port(struct net_bridge *br,
struct net_bridge_port *p);
-struct net_bridge_fdb_entry *br_fdb_get(struct net_bridge *br,
+extern struct net_bridge_fdb_entry *br_fdb_get(struct net_bridge *br,
unsigned char *addr);
-void br_fdb_put(struct net_bridge_fdb_entry *ent);
-int br_fdb_get_entries(struct net_bridge *br,
+extern void br_fdb_put(struct net_bridge_fdb_entry *ent);
+extern int br_fdb_get_entries(struct net_bridge *br,
unsigned char *_buf,
int maxnum,
int offset);
-void br_fdb_insert(struct net_bridge *br,
+extern void br_fdb_insert(struct net_bridge *br,
struct net_bridge_port *source,
unsigned char *addr,
int is_local);
/* br_forward.c */
-void br_forward(struct net_bridge_port *to,
+extern void br_forward(struct net_bridge_port *to,
struct sk_buff *skb);
-void br_flood(struct net_bridge *br,
+extern void br_flood(struct net_bridge *br,
struct sk_buff *skb,
int clone);
/* br_if.c */
-int br_add_bridge(char *name);
-int br_del_bridge(char *name);
-int br_add_if(struct net_bridge *br,
+extern int br_add_bridge(char *name);
+extern int br_del_bridge(char *name);
+extern int br_add_if(struct net_bridge *br,
struct net_device *dev);
-int br_del_if(struct net_bridge *br,
+extern int br_del_if(struct net_bridge *br,
struct net_device *dev);
-int br_get_bridge_ifindices(int *indices,
+extern int br_get_bridge_ifindices(int *indices,
int num);
-void br_get_port_ifindices(struct net_bridge *br,
+extern void br_get_port_ifindices(struct net_bridge *br,
int *ifindices);
/* br_input.c */
-void br_handle_frame(struct sk_buff *skb);
+extern void br_handle_frame(struct sk_buff *skb);
/* br_ioctl.c */
-void br_call_ioctl_atomic(void (*fn)(void));
-int br_ioctl(struct net_bridge *br,
+extern void br_call_ioctl_atomic(void (*fn)(void));
+extern int br_ioctl(struct net_bridge *br,
unsigned int cmd,
unsigned long arg0,
unsigned long arg1,
unsigned long arg2);
-int br_ioctl_deviceless_stub(unsigned long arg);
+extern int br_ioctl_deviceless_stub(unsigned long arg);
/* br_stp.c */
-int br_is_root_bridge(struct net_bridge *br);
-struct net_bridge_port *br_get_port(struct net_bridge *br,
+extern int br_is_root_bridge(struct net_bridge *br);
+extern struct net_bridge_port *br_get_port(struct net_bridge *br,
int port_no);
-void br_init_port(struct net_bridge_port *p);
-port_id br_make_port_id(struct net_bridge_port *p);
-void br_become_designated_port(struct net_bridge_port *p);
+extern void br_init_port(struct net_bridge_port *p);
+extern port_id br_make_port_id(struct net_bridge_port *p);
+extern void br_become_designated_port(struct net_bridge_port *p);
/* br_stp_if.c */
-void br_stp_enable_bridge(struct net_bridge *br);
-void br_stp_disable_bridge(struct net_bridge *br);
-void br_stp_enable_port(struct net_bridge_port *p);
-void br_stp_disable_port(struct net_bridge_port *p);
-void br_stp_recalculate_bridge_id(struct net_bridge *br);
-void br_stp_set_bridge_priority(struct net_bridge *br,
+extern void br_stp_enable_bridge(struct net_bridge *br);
+extern void br_stp_disable_bridge(struct net_bridge *br);
+extern void br_stp_enable_port(struct net_bridge_port *p);
+extern void br_stp_disable_port(struct net_bridge_port *p);
+extern void br_stp_recalculate_bridge_id(struct net_bridge *br);
+extern void br_stp_set_bridge_priority(struct net_bridge *br,
int newprio);
-void br_stp_set_port_priority(struct net_bridge_port *p,
+extern void br_stp_set_port_priority(struct net_bridge_port *p,
int newprio);
-void br_stp_set_path_cost(struct net_bridge_port *p,
+extern void br_stp_set_path_cost(struct net_bridge_port *p,
int path_cost);
/* br_stp_bpdu.c */
-void br_stp_handle_bpdu(struct sk_buff *skb);
+extern void br_stp_handle_bpdu(struct sk_buff *skb);
#endif
diff --git a/net/bridge/br_private_stp.h b/net/bridge/br_private_stp.h
index 2857d5c913ec..7aa4af3f503a 100644
--- a/net/bridge/br_private_stp.h
+++ b/net/bridge/br_private_stp.h
@@ -4,7 +4,7 @@
* Authors:
* Lennert Buytenhek <buytenh@gnu.org>
*
- * $Id: br_private_stp.h,v 1.2 2000/10/30 22:03:20 davem Exp $
+ * $Id: br_private_stp.h,v 1.3 2001/02/05 06:03:47 davem Exp $
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -33,21 +33,21 @@ struct br_config_bpdu
};
/* br_stp.c */
-void br_become_root_bridge(struct net_bridge *br);
-void br_config_bpdu_generation(struct net_bridge *);
-void br_configuration_update(struct net_bridge *);
-int br_is_designated_port(struct net_bridge_port *p);
-int br_is_root_bridge(struct net_bridge *br);
-void br_port_state_selection(struct net_bridge *);
-void br_received_config_bpdu(struct net_bridge_port *p, struct br_config_bpdu *bpdu);
-void br_received_tcn_bpdu(struct net_bridge_port *p);
-void br_tick(unsigned long __data);
-void br_transmit_config(struct net_bridge_port *p);
-void br_transmit_tcn(struct net_bridge *br);
-void br_topology_change_detection(struct net_bridge *br);
+extern void br_become_root_bridge(struct net_bridge *br);
+extern void br_config_bpdu_generation(struct net_bridge *);
+extern void br_configuration_update(struct net_bridge *);
+extern int br_is_designated_port(struct net_bridge_port *p);
+extern int br_is_root_bridge(struct net_bridge *br);
+extern void br_port_state_selection(struct net_bridge *);
+extern void br_received_config_bpdu(struct net_bridge_port *p, struct br_config_bpdu *bpdu);
+extern void br_received_tcn_bpdu(struct net_bridge_port *p);
+extern void br_tick(unsigned long __data);
+extern void br_transmit_config(struct net_bridge_port *p);
+extern void br_transmit_tcn(struct net_bridge *br);
+extern void br_topology_change_detection(struct net_bridge *br);
/* br_stp_bpdu.c */
-void br_send_config_bpdu(struct net_bridge_port *, struct br_config_bpdu *);
-void br_send_tcn_bpdu(struct net_bridge_port *);
+extern void br_send_config_bpdu(struct net_bridge_port *, struct br_config_bpdu *);
+extern void br_send_tcn_bpdu(struct net_bridge_port *);
#endif
diff --git a/net/core/iovec.c b/net/core/iovec.c
index 4ebad506e856..2fe34a20dc9b 100644
--- a/net/core/iovec.c
+++ b/net/core/iovec.c
@@ -21,7 +21,7 @@
#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/net.h>
#include <linux/in6.h>
#include <asm/uaccess.h>
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 5275e83b88ec..b248bf8bba1f 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -44,7 +44,7 @@
#include <linux/interrupt.h>
#include <linux/in.h>
#include <linux/inet.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/netdevice.h>
#include <linux/string.h>
#include <linux/skbuff.h>
diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c
index b930878c2eef..6cca075c00bb 100644
--- a/net/decnet/af_decnet.c
+++ b/net/decnet/af_decnet.c
@@ -114,6 +114,7 @@ Version 0.0.6 2.1.110 07-aug-98 Eduardo Marcelo Serrat
#include <net/sock.h>
#include <asm/segment.h>
#include <asm/system.h>
+#include <asm/ioctls.h>
#include <linux/mm.h>
#include <linux/interrupt.h>
#include <linux/proc_fs.h>
diff --git a/net/decnet/sysctl_net_decnet.c b/net/decnet/sysctl_net_decnet.c
index 0c9fb1f7ff8e..264d6fcb15ef 100644
--- a/net/decnet/sysctl_net_decnet.c
+++ b/net/decnet/sysctl_net_decnet.c
@@ -127,7 +127,7 @@ static int dn_node_address_strategy(ctl_table *table, int *name, int nlen,
void *newval, size_t newlen,
void **context)
{
- int len;
+ size_t len;
dn_address addr;
if (oldval && oldlenp) {
@@ -161,7 +161,7 @@ static int dn_node_address_handler(ctl_table *table, int write,
void *buffer, size_t *lenp)
{
char addr[DN_ASCBUF_LEN];
- int len;
+ size_t len;
dn_address dnaddr;
if (!*lenp || (filp->f_pos && !write)) {
@@ -265,7 +265,7 @@ static int dn_def_dev_handler(ctl_table *table, int write,
struct file * filp,
void *buffer, size_t *lenp)
{
- int len;
+ size_t len;
struct net_device *dev = decnet_default_device;
char devname[17];
diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
index 51592202afec..c43892ea55a9 100644
--- a/net/ipv4/arp.c
+++ b/net/ipv4/arp.c
@@ -65,19 +65,9 @@
* clean up the APFDDI & gen. FDDI bits.
* Alexey Kuznetsov: new arp state machine;
* now it is in net/core/neighbour.c.
+ * Krzysztof Halasa: Added Frame Relay ARP support.
*/
-/* RFC1122 Status:
- 2.3.2.1 (ARP Cache Validation):
- MUST provide mechanism to flush stale cache entries (OK)
- SHOULD be able to configure cache timeout (OK)
- MUST throttle ARP retransmits (OK)
- 2.3.2.2 (ARP Packet Queue):
- SHOULD save at least one packet from each "conversation" with an
- unresolved IP address. (OK)
- 950727 -- MS
-*/
-
#include <linux/types.h>
#include <linux/string.h>
#include <linux/kernel.h>
@@ -647,6 +637,20 @@ int arp_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt)
goto out;
break;
#endif
+#ifdef CONFIG_NET_FC
+ case ARPHRD_IEEE802:
+ /*
+ * According to RFC 2625, Fibre Channel devices (which are IEEE
+ * 802 devices) should accept ARP hardware types of 6 (IEEE 802)
+ * and 1 (Ethernet).
+ */
+ if (arp->ar_hrd != __constant_htons(ARPHRD_ETHER) &&
+ arp->ar_hrd != __constant_htons(ARPHRD_IEEE802))
+ goto out;
+ if (arp->ar_pro != __constant_htons(ETH_P_IP))
+ goto out;
+ break;
+#endif
#if defined(CONFIG_AX25) || defined(CONFIG_AX25_MODULE)
case ARPHRD_AX25:
if (arp->ar_pro != __constant_htons(AX25_P_IP))
@@ -689,6 +693,12 @@ int arp_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt)
goto out;
/*
+ * Special case: We must set Frame Relay source Q.922 address
+ */
+ if (dev_type == ARPHRD_DLCI)
+ sha = dev->broadcast;
+
+/*
* Process entry. The idea here is we want to send a reply if it is a
* request for us or if it is a request for someone else that we hold
* a proxy for. We want to add an entry to our cache if it is a reply
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
index 6b980e3f34bc..8d668ff41839 100644
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
@@ -1,7 +1,7 @@
/*
* NET3 IP device support routines.
*
- * Version: $Id: devinet.c,v 1.39 2000/12/10 22:24:11 davem Exp $
+ * Version: $Id: devinet.c,v 1.40 2001/02/05 06:03:47 davem Exp $
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -50,9 +50,7 @@
#ifdef CONFIG_SYSCTL
#include <linux/sysctl.h>
#endif
-#ifdef CONFIG_KMOD
#include <linux/kmod.h>
-#endif
#include <net/ip.h>
#include <net/route.h>
diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
index b7af2b9f6997..8b10997e2166 100644
--- a/net/ipv4/ipconfig.c
+++ b/net/ipv4/ipconfig.c
@@ -1,5 +1,5 @@
/*
- * $Id: ipconfig.c,v 1.34 2000/07/26 01:04:18 davem Exp $
+ * $Id: ipconfig.c,v 1.35 2000/12/30 06:46:36 davem Exp $
*
* Automatic Configuration of IP -- use BOOTP or RARP or user-supplied
* information to configure own IP address and routes.
diff --git a/net/ipv4/netfilter/ip_fw_compat.c b/net/ipv4/netfilter/ip_fw_compat.c
index 3698eb41d571..fcfb6e6538f4 100644
--- a/net/ipv4/netfilter/ip_fw_compat.c
+++ b/net/ipv4/netfilter/ip_fw_compat.c
@@ -9,6 +9,7 @@ struct notifier_block;
#include <linux/inetdevice.h>
#include <linux/netdevice.h>
#include <linux/module.h>
+#include <asm/uaccess.h>
#include <net/ip.h>
#include <net/route.h>
#include <linux/netfilter_ipv4/compat_firewall.h>
@@ -197,14 +198,28 @@ static unsigned int fw_confirm(unsigned int hooknum,
return NF_ACCEPT;
}
-extern int ip_fw_ctl(int optval, void *user, unsigned int len);
+extern int ip_fw_ctl(int optval, void *m, unsigned int len);
static int sock_fn(struct sock *sk, int optval, void *user, unsigned int len)
{
+ /* MAX of:
+ 2.2: sizeof(struct ip_fwtest) (~14x4 + 3x4 = 17x4)
+ 2.2: sizeof(struct ip_fwnew) (~1x4 + 15x4 + 3x4 + 3x4 = 22x4)
+ 2.0: sizeof(struct ip_fw) (~25x4)
+
+ We can't include both 2.0 and 2.2 headers, they conflict.
+ Hence, 200 is a good number. --RR */
+ char tmp_fw[200];
if (!capable(CAP_NET_ADMIN))
return -EPERM;
- return -ip_fw_ctl(optval, user, len);
+ if (len > sizeof(tmp_fw) || len < 1)
+ return -EINVAL;
+
+ if (copy_from_user(&tmp_fw, user, len))
+ return -EFAULT;
+
+ return -ip_fw_ctl(optval, &tmp_fw, len);
}
static struct nf_hook_ops preroute_ops
diff --git a/net/ipv4/netfilter/ipt_TOS.c b/net/ipv4/netfilter/ipt_TOS.c
index e834d5103343..2967ed241b7c 100644
--- a/net/ipv4/netfilter/ipt_TOS.c
+++ b/net/ipv4/netfilter/ipt_TOS.c
@@ -19,11 +19,11 @@ target(struct sk_buff **pskb,
const struct ipt_tos_target_info *tosinfo = targinfo;
if ((iph->tos & IPTOS_TOS_MASK) != tosinfo->tos) {
- u_int8_t diffs[2];
+ u_int16_t diffs[2];
- diffs[0] = iph->tos;
+ diffs[0] = htons(iph->tos) ^ 0xFFFF;
iph->tos = (iph->tos & IPTOS_PREC_MASK) | tosinfo->tos;
- diffs[1] = iph->tos;
+ diffs[1] = htons(iph->tos);
iph->check = csum_fold(csum_partial((char *)diffs,
sizeof(diffs),
iph->check^0xFFFF));
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
index 5db8dc8dd4b6..677ea7a371ba 100644
--- a/net/ipv4/raw.c
+++ b/net/ipv4/raw.c
@@ -41,6 +41,7 @@
#include <linux/config.h>
#include <asm/system.h>
#include <asm/uaccess.h>
+#include <asm/ioctls.h>
#include <linux/types.h>
#include <linux/sched.h>
#include <linux/errno.h>
diff --git a/net/ipv4/syncookies.c b/net/ipv4/syncookies.c
index d267223ed1b9..8f20486cd5f3 100644
--- a/net/ipv4/syncookies.c
+++ b/net/ipv4/syncookies.c
@@ -17,7 +17,7 @@
#include <linux/config.h>
#if defined(CONFIG_SYN_COOKIES)
#include <linux/tcp.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/random.h>
#include <net/tcp.h>
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 6660e0f7292f..a4c6102d1fe8 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -245,175 +245,6 @@
* TCP_CLOSE socket is finished
*/
-/*
- * RFC1122 status:
- * NOTE: I'm not going to be doing comments in the code for this one except
- * for violations and the like. tcp.c is just too big... If I say something
- * "does?" or "doesn't?", it means I'm not sure, and will have to hash it out
- * with Alan. -- MS 950903
- * [Note: Most of the TCP code has been rewriten/redesigned since this
- * RFC1122 check. It is probably not correct anymore. It should be redone
- * before 2.2. -AK]
- *
- * Use of PSH (4.2.2.2)
- * MAY aggregate data sent without the PSH flag. (does)
- * MAY queue data received without the PSH flag. (does)
- * SHOULD collapse successive PSH flags when it packetizes data. (doesn't)
- * MAY implement PSH on send calls. (doesn't, thus:)
- * MUST NOT buffer data indefinitely (doesn't [1 second])
- * MUST set PSH on last segment (does)
- * MAY pass received PSH to application layer (doesn't)
- * SHOULD send maximum-sized segment whenever possible. (almost always does)
- *
- * Window Size (4.2.2.3, 4.2.2.16)
- * MUST treat window size as an unsigned number (does)
- * SHOULD treat window size as a 32-bit number (does not)
- * MUST NOT shrink window once it is offered (does not normally)
- *
- * Urgent Pointer (4.2.2.4)
- * **MUST point urgent pointer to last byte of urgent data (not right
- * after). (doesn't, to be like BSD. That's configurable, but defaults
- * to off)
- * MUST inform application layer asynchronously of incoming urgent
- * data. (does)
- * MUST provide application with means of determining the amount of
- * urgent data pending. (does)
- * **MUST support urgent data sequence of arbitrary length. (doesn't, but
- * it's sort of tricky to fix, as urg_ptr is a 16-bit quantity)
- * [Follows BSD 1 byte of urgent data]
- *
- * TCP Options (4.2.2.5)
- * MUST be able to receive TCP options in any segment. (does)
- * MUST ignore unsupported options (does)
- *
- * Maximum Segment Size Option (4.2.2.6)
- * MUST implement both sending and receiving MSS. (does, but currently
- * only uses the smaller of both of them)
- * SHOULD send an MSS with every SYN where receive MSS != 536 (MAY send
- * it always). (does, even when MSS == 536, which is legal)
- * MUST assume MSS == 536 if no MSS received at connection setup (does)
- * MUST calculate "effective send MSS" correctly:
- * min(physical_MTU, remote_MSS+20) - sizeof(tcphdr) - sizeof(ipopts)
- * (does - but allows operator override)
- *
- * TCP Checksum (4.2.2.7)
- * MUST generate and check TCP checksum. (does)
- *
- * Initial Sequence Number Selection (4.2.2.8)
- * MUST use the RFC 793 clock selection mechanism. (doesn't, but it's
- * OK: RFC 793 specifies a 250KHz clock, while we use 1MHz, which is
- * necessary for 10Mbps networks - and harder than BSD to spoof!
- * With syncookies we don't)
- *
- * Simultaneous Open Attempts (4.2.2.10)
- * MUST support simultaneous open attempts (does)
- *
- * Recovery from Old Duplicate SYN (4.2.2.11)
- * MUST keep track of active vs. passive open (does)
- *
- * RST segment (4.2.2.12)
- * SHOULD allow an RST segment to contain data (does, but doesn't do
- * anything with it, which is standard)
- *
- * Closing a Connection (4.2.2.13)
- * MUST inform application of whether connection was closed by RST or
- * normal close. (does)
- * MAY allow "half-duplex" close (treat connection as closed for the
- * local app, even before handshake is done). (does)
- * MUST linger in TIME_WAIT for 2 * MSL (does)
- *
- * Retransmission Timeout (4.2.2.15)
- * MUST implement Jacobson's slow start and congestion avoidance
- * stuff. (does)
- *
- * Probing Zero Windows (4.2.2.17)
- * MUST support probing of zero windows. (does)
- * MAY keep offered window closed indefinitely. (does)
- * MUST allow remote window to stay closed indefinitely. (does)
- *
- * Passive Open Calls (4.2.2.18)
- * MUST NOT let new passive open affect other connections. (doesn't)
- * MUST support passive opens (LISTENs) concurrently. (does)
- *
- * Time to Live (4.2.2.19)
- * MUST make TCP TTL configurable. (does - IP_TTL option)
- *
- * Event Processing (4.2.2.20)
- * SHOULD queue out-of-order segments. (does)
- * MUST aggregate ACK segments whenever possible. (does but badly)
- *
- * Retransmission Timeout Calculation (4.2.3.1)
- * MUST implement Karn's algorithm and Jacobson's algorithm for RTO
- * calculation. (does, or at least explains them in the comments 8*b)
- * SHOULD initialize RTO to 0 and RTT to 3. (does)
- *
- * When to Send an ACK Segment (4.2.3.2)
- * SHOULD implement delayed ACK. (does)
- * MUST keep ACK delay < 0.5 sec. (does)
- *
- * When to Send a Window Update (4.2.3.3)
- * MUST implement receiver-side SWS. (does)
- *
- * When to Send Data (4.2.3.4)
- * MUST implement sender-side SWS. (does)
- * SHOULD implement Nagle algorithm. (does)
- *
- * TCP Connection Failures (4.2.3.5)
- * MUST handle excessive retransmissions "properly" (see the RFC). (does)
- * SHOULD inform application layer of soft errors. (does)
- *
- * TCP Keep-Alives (4.2.3.6)
- * MAY provide keep-alives. (does)
- * MUST make keep-alives configurable on a per-connection basis. (does)
- * MUST default to no keep-alives. (does)
- * MUST make keep-alive interval configurable. (does)
- * MUST make default keep-alive interval > 2 hours. (does)
- * MUST NOT interpret failure to ACK keep-alive packet as dead
- * connection. (doesn't)
- * SHOULD send keep-alive with no data. (does)
- *
- * TCP Multihoming (4.2.3.7)
- * MUST get source address from IP layer before sending first
- * SYN. (does)
- * MUST use same local address for all segments of a connection. (does)
- *
- * IP Options (4.2.3.8)
- * MUST ignore unsupported IP options. (does)
- * MAY support Time Stamp and Record Route. (does)
- * MUST allow application to specify a source route. (does)
- * MUST allow received Source Route option to set route for all future
- * segments on this connection. (does not (security issues))
- *
- * ICMP messages (4.2.3.9)
- * MUST act on ICMP errors. (does)
- * MUST slow transmission upon receipt of a Source Quench. (doesn't anymore
- * because that is deprecated now by the IETF, can be turned on)
- * MUST NOT abort connection upon receipt of soft Destination
- * Unreachables (0, 1, 5), Time Exceededs and Parameter
- * Problems. (doesn't)
- * SHOULD report soft Destination Unreachables etc. to the
- * application. (does, except during SYN_RECV and may drop messages
- * in some rare cases before accept() - ICMP is unreliable)
- * SHOULD abort connection upon receipt of hard Destination Unreachable
- * messages (2, 3, 4). (does, but see above)
- *
- * Remote Address Validation (4.2.3.10)
- * MUST reject as an error OPEN for invalid remote IP address. (does)
- * MUST ignore SYN with invalid source address. (does)
- * MUST silently discard incoming SYN for broadcast/multicast
- * address. (does)
- *
- * Asynchronous Reports (4.2.4.1)
- * MUST provide mechanism for reporting soft errors to application
- * layer. (does)
- *
- * Type of Service (4.2.4.2)
- * MUST allow application layer to set Type of Service. (does IP_TOS)
- *
- * (Whew. -- MS 950903)
- * (Updated by AK, but not complete yet.)
- **/
-
#include <linux/config.h>
#include <linux/types.h>
#include <linux/fcntl.h>
@@ -425,6 +256,7 @@
#include <net/tcp.h>
#include <asm/uaccess.h>
+#include <asm/ioctls.h>
int sysctl_tcp_fin_timeout = TCP_FIN_TIMEOUT;
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index a3f83272b9fc..3ce6b95091c0 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -600,7 +600,7 @@ void tcp_update_metrics(struct sock *sk)
/* Increase initial CWND conservatively: if estimated
* RTT is low enough (<20msec) or if we have some preset ssthresh.
*
- * Numbers are taken from RFC1414.
+ * Numbers are taken from RFC2414.
*/
__u32 tcp_init_cwnd(struct tcp_opt *tp)
{
@@ -2164,43 +2164,23 @@ extern __inline__ int tcp_paws_discard(struct tcp_opt *tp, struct sk_buff *skb)
!tcp_disordered_ack(tp, skb));
}
-static int __tcp_sequence(struct tcp_opt *tp, u32 seq, u32 end_seq)
-{
- u32 end_window = tp->rcv_wup + tp->rcv_wnd;
-#ifdef TCP_FORMAL_WINDOW
- u32 rcv_wnd = tcp_receive_window(tp);
-#else
- u32 rcv_wnd = tp->rcv_wnd;
-#endif
-
- if (rcv_wnd &&
- after(end_seq, tp->rcv_nxt) &&
- before(seq, end_window))
- return 1;
- if (seq != end_window)
- return 0;
- return (seq == end_seq);
-}
-
-/* This functions checks to see if the tcp header is actually acceptable.
+/* Check segment sequence number for validity.
+ *
+ * Segment controls are considered valid, if the segment
+ * fits to the window after truncation to the window. Acceptability
+ * of data (and SYN, FIN, of course) is checked separately.
+ * See tcp_data_queue(), for example.
*
- * Actually, our check is seriously broken, we must accept RST,ACK,URG
- * even on zero window effectively trimming data. It is RFC, guys.
- * But our check is so beautiful, that I do not want to repair it
- * now. However, taking into account those stupid plans to start to
- * send some texts with RST, we have to handle at least this case. --ANK
+ * Also, controls (RST is main one) are accepted using RCV.WUP instead
+ * of RCV.NXT. Peer still did not advance his SND.UNA when we
+ * delayed ACK, so that hisSND.UNA<=ourRCV.WUP.
+ * (borrowed from freebsd)
*/
-extern __inline__ int tcp_sequence(struct tcp_opt *tp, u32 seq, u32 end_seq, int rst)
-{
-#ifdef TCP_FORMAL_WINDOW
- u32 rcv_wnd = tcp_receive_window(tp);
-#else
- u32 rcv_wnd = tp->rcv_wnd;
-#endif
- if (seq == tp->rcv_nxt)
- return (rcv_wnd || (end_seq == seq) || rst);
- return __tcp_sequence(tp, seq, end_seq);
+static inline int tcp_sequence(struct tcp_opt *tp, u32 seq, u32 end_seq)
+{
+ return !before(end_seq, tp->rcv_wup) &&
+ !after(seq, tp->rcv_nxt + tcp_receive_window(tp));
}
/* When we get a reset we do this. */
@@ -2541,7 +2521,10 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb)
* Out of sequence packets to the out_of_order_queue.
*/
if (TCP_SKB_CB(skb)->seq == tp->rcv_nxt) {
- /* Ok. In sequence. */
+ if (tcp_receive_window(tp) == 0)
+ goto out_of_window;
+
+ /* Ok. In sequence. In window. */
if (tp->ucopy.task == current &&
tp->copied_seq == tp->rcv_nxt &&
tp->ucopy.len &&
@@ -2601,20 +2584,27 @@ queue_and_out:
return;
}
-#ifdef TCP_DEBUG
- /* An old packet, either a retransmit or some packet got lost. */
if (!after(TCP_SKB_CB(skb)->end_seq, tp->rcv_nxt)) {
- /* A retransmit, 2nd most common case. Force an imediate ack.
- *
- * It is impossible, seq is checked by top level.
- */
- printk("BUG: retransmit in tcp_data_queue: seq %X\n", TCP_SKB_CB(skb)->seq);
+ /* A retransmit, 2nd most common case. Force an immediate ack. */
+ NET_INC_STATS_BH(DelayedACKLost);
tcp_enter_quickack_mode(tp);
+ tcp_dsack_set(tp, TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb)->end_seq);
+
+out_of_window:
tcp_schedule_ack(tp);
__kfree_skb(skb);
return;
}
-#endif
+
+ /* Out of window. F.e. zero window probe.
+ *
+ * Note: it is highly possible that we may open window and enqueue
+ * this segment now. However, this will be known only after we queue
+ * it, which will result in queue full of successive 1 byte BSD
+ * window probes, it is SWS in fact. So, always reject it and send ACK.
+ */
+ if (!before(TCP_SKB_CB(skb)->seq, tp->rcv_nxt+tcp_receive_window(tp)))
+ goto out_of_window;
tcp_enter_quickack_mode(tp);
@@ -2625,6 +2615,12 @@ queue_and_out:
TCP_SKB_CB(skb)->end_seq);
tcp_dsack_set(tp, TCP_SKB_CB(skb)->seq, tp->rcv_nxt);
+
+ /* If window is closed, drop tail of packet. But after
+ * remembering D-SACK for its head made in previous line.
+ */
+ if (!tcp_receive_window(tp))
+ goto out_of_window;
goto queue_and_out;
}
@@ -3333,7 +3329,7 @@ slow_path:
* Standard slow path.
*/
- if (!tcp_sequence(tp, TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb)->end_seq, th->rst)) {
+ if (!tcp_sequence(tp, TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb)->end_seq)) {
/* RFC793, page 37: "In all states except SYN-SENT, all reset
* (RST) segments are validated by checking their SEQ-fields."
* And page 69: "If an incoming segment is not acceptable,
@@ -3669,7 +3665,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
}
/* step 1: check sequence number */
- if (!tcp_sequence(tp, TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb)->end_seq, th->rst)) {
+ if (!tcp_sequence(tp, TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb)->end_seq)) {
if (!th->rst)
tcp_send_dupack(sk, skb);
goto discard;
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
index 27815dcb7996..a3e72327bd44 100644
--- a/net/ipv4/tcp_timer.c
+++ b/net/ipv4/tcp_timer.c
@@ -5,7 +5,7 @@
*
* Implementation of the Transmission Control Protocol(TCP).
*
- * Version: $Id: tcp_timer.c,v 1.80 2000/10/03 07:29:01 anton Exp $
+ * Version: $Id: tcp_timer.c,v 1.81 2001/01/01 02:38:30 davem Exp $
*
* Authors: Ross Biro, <bir7@leland.Stanford.Edu>
* Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index 3d177c7c90bb..8067f5a18080 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -69,31 +69,9 @@
* 2 of the License, or (at your option) any later version.
*/
-/* RFC1122 Status:
- 4.1.3.1 (Ports):
- SHOULD send ICMP_PORT_UNREACHABLE in response to datagrams to
- an un-listened port. (OK)
- 4.1.3.2 (IP Options)
- MUST pass IP options from IP -> application (OK)
- MUST allow application to specify IP options (OK)
- 4.1.3.3 (ICMP Messages)
- MUST pass ICMP error messages to application (OK -- except when SO_BSDCOMPAT is set)
- 4.1.3.4 (UDP Checksums)
- MUST provide facility for checksumming (OK)
- MAY allow application to control checksumming (OK)
- MUST default to checksumming on (OK)
- MUST discard silently datagrams with bad csums (OK, except during debugging)
- 4.1.3.5 (UDP Multihoming)
- MUST allow application to specify source address (OK)
- SHOULD be able to communicate the chosen src addr up to application
- when application doesn't choose (DOES - use recvmsg cmsgs)
- 4.1.3.6 (Invalid Addresses)
- MUST discard invalid source addresses (OK -- done in the new routing code)
- MUST only send datagrams with one of our addresses (OK)
-*/
-
#include <asm/system.h>
#include <asm/uaccess.h>
+#include <asm/ioctls.h>
#include <linux/types.h>
#include <linux/fcntl.h>
#include <linux/socket.h>
@@ -161,7 +139,7 @@ static int udp_v4_get_port(struct sock *sk, unsigned short snum)
next:;
}
result = best;
- for(;; result += UDP_HTABLE_SIZE) {
+ for(i = 0; i < (1 << 16) / UDP_HTABLE_SIZE; i++, result += UDP_HTABLE_SIZE) {
if (result > sysctl_local_port_range[1])
result = sysctl_local_port_range[0]
+ ((result - sysctl_local_port_range[0]) &
@@ -169,6 +147,8 @@ static int udp_v4_get_port(struct sock *sk, unsigned short snum)
if (!udp_lport_inuse(result))
break;
}
+ if (i >= (1 << 16) / UDP_HTABLE_SIZE)
+ goto fail;
gotit:
udp_port_rover = snum = result;
} else {
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 9931651428c2..bef0e2fcd929 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -6,7 +6,7 @@
* Pedro Roque <roque@di.fc.ul.pt>
* Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
*
- * $Id: addrconf.c,v 1.59 2000/11/28 11:39:43 davem Exp $
+ * $Id: addrconf.c,v 1.60 2001/01/01 02:38:30 davem Exp $
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
index e934897ec5ef..1a4c44a39222 100644
--- a/net/ipv6/raw.c
+++ b/net/ipv6/raw.c
@@ -29,6 +29,7 @@
#include <linux/if_arp.h>
#include <linux/icmpv6.h>
#include <asm/uaccess.h>
+#include <asm/ioctls.h>
#include <net/sock.h>
#include <net/snmp.h>
diff --git a/net/ipx/af_ipx.c b/net/ipx/af_ipx.c
index fb73651bf2a3..38edf6ec864f 100644
--- a/net/ipx/af_ipx.c
+++ b/net/ipx/af_ipx.c
@@ -64,6 +64,7 @@
* Revision 043: Shared SKBs, don't mangle packets, some cleanups
* Arnaldo Carvalho de Melo <acme@conectiva.com.br>,
* December, 2000
+ * Revision 044: Call ipxitf_hold on NETDEV_UP (acme)
*
* Protect the module by a MOD_INC_USE_COUNT/MOD_DEC_USE_COUNT
* pair. Also, now usage count is managed this way
@@ -443,19 +444,21 @@ static int ipxitf_device_event(struct notifier_block *notifier,
struct net_device *dev = ptr;
ipx_interface *i, *tmp;
- if (event != NETDEV_DOWN)
- return NOTIFY_DONE;
+ if (event != NETDEV_DOWN && event != NETDEV_UP)
+ goto out;
spin_lock_bh(&ipx_interfaces_lock);
for (i = ipx_interfaces; i;) {
tmp = i->if_next;
if (i->if_dev == dev)
- __ipxitf_put(i);
+ if (event == NETDEV_UP)
+ ipxitf_hold(i);
+ else
+ __ipxitf_put(i);
i = tmp;
-
}
spin_unlock_bh(&ipx_interfaces_lock);
- return NOTIFY_DONE;
+out: return NOTIFY_DONE;
}
static void ipxitf_def_skb_handler(struct sock *sock, struct sk_buff *skb)
@@ -1067,7 +1070,7 @@ static int ipxitf_create(ipx_interface_definition *idef)
intrfc->if_sklist = NULL;
intrfc->if_sknum = IPX_MIN_EPHEMERAL_SOCKET;
/* Setup primary if necessary */
- if ((idef->ipx_special == IPX_PRIMARY))
+ if (idef->ipx_special == IPX_PRIMARY)
ipx_primary_net = intrfc;
intrfc->if_internal = 0;
intrfc->if_ipx_offset = dev->hard_header_len + datalink->header_length;
@@ -2407,8 +2410,8 @@ int ipx_unregister_spx(void)
*/
static struct net_proto_family ipx_family_ops = {
- PF_IPX,
- ipx_create
+ family: PF_IPX,
+ create: ipx_create,
};
static struct proto_ops SOCKOPS_WRAPPED(ipx_dgram_ops) = {
@@ -2423,7 +2426,7 @@ static struct proto_ops SOCKOPS_WRAPPED(ipx_dgram_ops) = {
poll: datagram_poll,
ioctl: ipx_ioctl,
listen: sock_no_listen,
- shutdown: sock_no_shutdown, /* FIXME: We have to really support shutdown. */
+ shutdown: sock_no_shutdown, /* FIXME: have to support shutdown */
setsockopt: ipx_setsockopt,
getsockopt: ipx_getsockopt,
sendmsg: ipx_sendmsg,
@@ -2437,26 +2440,20 @@ SOCKOPS_WRAP(ipx_dgram, PF_IPX);
static struct packet_type ipx_8023_packet_type =
{
- __constant_htons(ETH_P_802_3),
- NULL, /* All devices */
- ipx_rcv,
- (void *) 1, /* yap, I understand shared skbs :-) */
- NULL,
+ type: __constant_htons(ETH_P_802_3),
+ func: ipx_rcv,
+ data: (void *) 1, /* yap, I understand shared skbs :-) */
};
static struct packet_type ipx_dix_packet_type =
{
- __constant_htons(ETH_P_IPX),
- NULL, /* All devices */
- ipx_rcv,
- (void *) 1, /* yap, I understand shared skbs :-) */
- NULL,
+ type: __constant_htons(ETH_P_IPX),
+ func: ipx_rcv,
+ data: (void *) 1, /* yap, I understand shared skbs :-) */
};
-static struct notifier_block ipx_dev_notifier={
- ipxitf_device_event,
- NULL,
- 0
+static struct notifier_block ipx_dev_notifier = {
+ notifier_call: ipxitf_device_event,
};
@@ -2492,7 +2489,7 @@ static int __init ipx_init(void)
proc_net_create("ipx_interface", 0, ipx_interface_get_info);
proc_net_create("ipx_route", 0, ipx_rt_get_info);
#endif
- printk(KERN_INFO "NET4: Linux IPX 0.43 for NET4.0\n");
+ printk(KERN_INFO "NET4: Linux IPX 0.44 for NET4.0\n");
printk(KERN_INFO "IPX Portions Copyright (c) 1995 Caldera, Inc.\n");
printk(KERN_INFO "IPX Portions Copyright (c) 2000 Conectiva, Inc.\n");
return 0;
diff --git a/net/irda/compressors/irda_deflate.c b/net/irda/compressors/irda_deflate.c
index f0d2cbb0d188..d83ddaab8c96 100644
--- a/net/irda/compressors/irda_deflate.c
+++ b/net/irda/compressors/irda_deflate.c
@@ -51,7 +51,7 @@
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/in.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/errno.h>
#include <linux/string.h> /* used in new tty drivers */
diff --git a/net/irda/irlap.c b/net/irda/irlap.c
index f66847b820e7..b815f9f3a0cb 100644
--- a/net/irda/irlap.c
+++ b/net/irda/irlap.c
@@ -29,7 +29,7 @@
********************************************************************/
#include <linux/config.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/skbuff.h>
#include <linux/delay.h>
diff --git a/net/irda/irlmp.c b/net/irda/irlmp.c
index 8b4d47caa553..29debb1bd840 100644
--- a/net/irda/irlmp.c
+++ b/net/irda/irlmp.c
@@ -24,7 +24,7 @@
********************************************************************/
#include <linux/config.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/skbuff.h>
#include <linux/types.h>
diff --git a/net/khttpd/misc.c b/net/khttpd/misc.c
index b459b51fe13b..b5a2f3fd6671 100644
--- a/net/khttpd/misc.c
+++ b/net/khttpd/misc.c
@@ -26,7 +26,7 @@ General functions
#include <linux/ctype.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/net.h>
#include <linux/sched.h>
#include <linux/skbuff.h>
diff --git a/net/khttpd/rfc.c b/net/khttpd/rfc.c
index ff5e2545115d..c2629682ac6f 100644
--- a/net/khttpd/rfc.c
+++ b/net/khttpd/rfc.c
@@ -28,7 +28,7 @@ RFC related functions (headers and stuff)
#include <linux/ctype.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/net.h>
#include <linux/sched.h>
#include <linux/skbuff.h>
diff --git a/net/khttpd/rfc_time.c b/net/khttpd/rfc_time.c
index 8672cce7c4b9..4fd267885ee2 100644
--- a/net/khttpd/rfc_time.c
+++ b/net/khttpd/rfc_time.c
@@ -27,7 +27,7 @@ Functions related to time:
#include <linux/time.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ctype.h>
diff --git a/net/khttpd/security.c b/net/khttpd/security.c
index 792abd083d56..f54e6e96092a 100644
--- a/net/khttpd/security.c
+++ b/net/khttpd/security.c
@@ -27,7 +27,7 @@ Permissions/Security functions
#include <linux/kernel.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/net.h>
#include <linux/sched.h>
#include <linux/skbuff.h>
diff --git a/net/khttpd/sysctl.c b/net/khttpd/sysctl.c
index 244eb76db353..4352b92e4ea6 100644
--- a/net/khttpd/sysctl.c
+++ b/net/khttpd/sysctl.c
@@ -25,7 +25,7 @@ Sysctl interface
#include <linux/kernel.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/net.h>
#include <linux/sched.h>
#include <linux/skbuff.h>
@@ -259,7 +259,7 @@ void EndSysctl(void)
static int proc_dosecurestring(ctl_table *table, int write, struct file *filp,
void *buffer, size_t *lenp)
{
- int len;
+ size_t len;
char *p, c=0;
char String[256];
diff --git a/net/khttpd/userspace.c b/net/khttpd/userspace.c
index 9c05d4788308..9c784399648c 100644
--- a/net/khttpd/userspace.c
+++ b/net/khttpd/userspace.c
@@ -35,7 +35,7 @@ Return value:
#include <linux/kernel.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/net.h>
#include <linux/sched.h>
#include <linux/skbuff.h>
diff --git a/net/lapb/Makefile b/net/lapb/Makefile
index 10745d9048fb..85b699195804 100644
--- a/net/lapb/Makefile
+++ b/net/lapb/Makefile
@@ -17,5 +17,3 @@ obj-m := $(O_TARGET)
include $(TOPDIR)/Rules.make
-tar:
- tar -cvf /dev/f1 .
diff --git a/net/lapb/lapb_iface.c b/net/lapb/lapb_iface.c
index 1723588da48d..aad566564000 100644
--- a/net/lapb/lapb_iface.c
+++ b/net/lapb/lapb_iface.c
@@ -16,7 +16,6 @@
*/
#include <linux/config.h>
-#if defined(CONFIG_LAPB) || defined(CONFIG_LAPB_MODULE)
#include <linux/module.h>
#include <linux/errno.h>
#include <linux/types.h>
@@ -41,7 +40,7 @@
#include <linux/init.h>
#include <net/lapb.h>
-static lapb_cb *volatile lapb_list = NULL;
+static lapb_cb *volatile lapb_list /* = NULL initially */;
/*
* Free an allocated lapb control block. This is done to centralise
@@ -271,7 +270,7 @@ int lapb_connect_request(void *token)
return LAPB_OK;
}
-
+
int lapb_disconnect_request(void *token)
{
lapb_cb *lapb;
@@ -399,18 +398,15 @@ EXPORT_SYMBOL(lapb_disconnect_request);
EXPORT_SYMBOL(lapb_data_request);
EXPORT_SYMBOL(lapb_data_received);
+static const char banner[] __initdata = KERN_INFO "NET4: LAPB for Linux. Version 0.01 for NET4.0\n";
+
static int __init lapb_init(void)
{
- printk(KERN_INFO "NET4: LAPB for Linux. Version 0.01 for NET4.0\n");
+ printk(banner);
return 0;
}
-#ifdef MODULE
MODULE_AUTHOR("Jonathan Naylor <g4klx@g4klx.demon.co.uk>");
MODULE_DESCRIPTION("The X.25 Link Access Procedure B link layer protocol");
-#endif
-
module_init(lapb_init);
-
-#endif
diff --git a/net/lapb/lapb_in.c b/net/lapb/lapb_in.c
index 0b45f57f597c..b44e7e19ae3e 100644
--- a/net/lapb/lapb_in.c
+++ b/net/lapb/lapb_in.c
@@ -15,8 +15,6 @@
* 2000-10-29 Henner Eisen lapb_data_indication() return status.
*/
-#include <linux/config.h>
-#if defined(CONFIG_LAPB) || defined(CONFIG_LAPB_MODULE)
#include <linux/errno.h>
#include <linux/types.h>
#include <linux/socket.h>
@@ -641,5 +639,3 @@ void lapb_data_input(lapb_cb *lapb, struct sk_buff *skb)
lapb_kick(lapb);
}
-
-#endif
diff --git a/net/lapb/lapb_out.c b/net/lapb/lapb_out.c
index 8c8b21c10ba7..c3fcc2f52d01 100644
--- a/net/lapb/lapb_out.c
+++ b/net/lapb/lapb_out.c
@@ -14,8 +14,6 @@
* LAPB 002 Jonathan Naylor New timer architecture.
*/
-#include <linux/config.h>
-#if defined(CONFIG_LAPB) || defined(CONFIG_LAPB_MODULE)
#include <linux/errno.h>
#include <linux/types.h>
#include <linux/socket.h>
@@ -223,5 +221,3 @@ void lapb_check_need_response(lapb_cb *lapb, int type, int pf)
if (type == LAPB_COMMAND && pf)
lapb_enquiry_response(lapb);
}
-
-#endif
diff --git a/net/lapb/lapb_subr.c b/net/lapb/lapb_subr.c
index 611eba6f18a2..aa701ad2148f 100644
--- a/net/lapb/lapb_subr.c
+++ b/net/lapb/lapb_subr.c
@@ -13,8 +13,6 @@
* LAPB 001 Jonathan Naylor Started Coding
*/
-#include <linux/config.h>
-#if defined(CONFIG_LAPB) || defined(CONFIG_LAPB_MODULE)
#include <linux/errno.h>
#include <linux/types.h>
#include <linux/socket.h>
@@ -281,5 +279,3 @@ void lapb_transmit_frmr(lapb_cb *lapb)
lapb_transmit_buffer(lapb, skb, LAPB_RESPONSE);
}
-
-#endif
diff --git a/net/lapb/lapb_timer.c b/net/lapb/lapb_timer.c
index 2b6b7dfb89da..d65e32e5e1cb 100644
--- a/net/lapb/lapb_timer.c
+++ b/net/lapb/lapb_timer.c
@@ -14,8 +14,6 @@
* LAPB 002 Jonathan Naylor New timer architecture.
*/
-#include <linux/config.h>
-#if defined(CONFIG_LAPB) || defined(CONFIG_LAPB_MODULE)
#include <linux/errno.h>
#include <linux/types.h>
#include <linux/socket.h>
@@ -189,5 +187,3 @@ static void lapb_t1timer_expiry(unsigned long param)
lapb_start_t1timer(lapb);
}
-
-#endif
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index a8218d679558..f6800ac257c6 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -29,7 +29,7 @@
#include <linux/sockios.h>
#include <linux/net.h>
#include <linux/fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/uaccess.h>
#include <linux/skbuff.h>
#include <linux/netdevice.h>
diff --git a/net/netlink/netlink_dev.c b/net/netlink/netlink_dev.c
index da7598a79654..9513cbab9924 100644
--- a/net/netlink/netlink_dev.c
+++ b/net/netlink/netlink_dev.c
@@ -20,7 +20,7 @@
#include <linux/kernel.h>
#include <linux/major.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/skbuff.h>
#include <linux/netlink.h>
#include <linux/poll.h>
diff --git a/net/netrom/Makefile b/net/netrom/Makefile
index e44e36144fe6..cf3a8a4b2138 100644
--- a/net/netrom/Makefile
+++ b/net/netrom/Makefile
@@ -17,5 +17,3 @@ obj-$(CONFIG_SYSCTL) += sysctl_net_netrom.o
include $(TOPDIR)/Rules.make
-tar:
- tar -cvf /dev/f1 .
diff --git a/net/netsyms.c b/net/netsyms.c
index ebe3bbe81ebc..52b98f4e1a8c 100644
--- a/net/netsyms.c
+++ b/net/netsyms.c
@@ -17,6 +17,7 @@
#include <linux/trdevice.h>
#include <linux/fcdevice.h>
#include <linux/ioport.h>
+#include <linux/tty.h>
#include <net/neighbour.h>
#include <net/snmp.h>
#include <net/dst.h>
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index 790a5749003a..b8ff49ea10bb 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -62,6 +62,7 @@
#include <linux/timer.h>
#include <asm/system.h>
#include <asm/uaccess.h>
+#include <asm/ioctls.h>
#include <linux/proc_fs.h>
#include <linux/poll.h>
#include <linux/module.h>
diff --git a/net/rose/Makefile b/net/rose/Makefile
index 7799143b04ed..08da73aed76b 100644
--- a/net/rose/Makefile
+++ b/net/rose/Makefile
@@ -17,5 +17,3 @@ obj-$(CONFIG_SYSCTL) += sysctl_net_rose.o
include $(TOPDIR)/Rules.make
-tar:
- tar -cvf /dev/f1 .
diff --git a/net/sched/sch_atm.c b/net/sched/sch_atm.c
index 021d7d658ca9..51d638b3a8cc 100644
--- a/net/sched/sch_atm.c
+++ b/net/sched/sch_atm.c
@@ -5,6 +5,8 @@
#include <linux/config.h>
#include <linux/module.h>
+#include <linux/string.h>
+#include <linux/errno.h>
#include <linux/skbuff.h>
#include <linux/interrupt.h>
#include <linux/atmdev.h>
diff --git a/net/sched/sch_dsmark.c b/net/sched/sch_dsmark.c
index a66fd2b45761..d30d08896ab2 100644
--- a/net/sched/sch_dsmark.c
+++ b/net/sched/sch_dsmark.c
@@ -6,6 +6,8 @@
#include <linux/config.h>
#include <linux/module.h>
#include <linux/types.h>
+#include <linux/string.h>
+#include <linux/errno.h>
#include <linux/skbuff.h>
#include <linux/netdevice.h> /* for pkt_sched */
#include <linux/rtnetlink.h>
diff --git a/net/sunrpc/auth.c b/net/sunrpc/auth.c
index a6af993c882d..9cda62023cf0 100644
--- a/net/sunrpc/auth.c
+++ b/net/sunrpc/auth.c
@@ -8,7 +8,7 @@
#include <linux/types.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
#include <linux/socket.h>
#include <linux/sunrpc/clnt.h>
diff --git a/net/sunrpc/auth_null.c b/net/sunrpc/auth_null.c
index a9e42721a2c5..0e9fddb2807b 100644
--- a/net/sunrpc/auth_null.c
+++ b/net/sunrpc/auth_null.c
@@ -7,7 +7,7 @@
*/
#include <linux/types.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/socket.h>
#include <linux/in.h>
#include <linux/utsname.h>
diff --git a/net/sunrpc/auth_unix.c b/net/sunrpc/auth_unix.c
index 3da9ff39227f..dae3067b55f2 100644
--- a/net/sunrpc/auth_unix.c
+++ b/net/sunrpc/auth_unix.c
@@ -7,7 +7,7 @@
*/
#include <linux/types.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/socket.h>
#include <linux/in.h>
#include <linux/sunrpc/clnt.h>
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index 92a531fe09b2..443c456b80d4 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -25,7 +25,7 @@
#include <linux/types.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/in.h>
#include <linux/utsname.h>
diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
index b229ee3e1018..7e5c082a5c4a 100644
--- a/net/sunrpc/sched.c
+++ b/net/sunrpc/sched.c
@@ -14,7 +14,7 @@
#define __KERNEL_SYSCALLS__
#include <linux/sched.h>
#include <linux/interrupt.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/unistd.h>
#include <linux/smp.h>
#include <linux/smp_lock.h>
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
index 26a1407719a0..53d0ed236e78 100644
--- a/net/sunrpc/svcsock.c
+++ b/net/sunrpc/svcsock.c
@@ -28,13 +28,14 @@
#include <linux/udp.h>
#include <linux/version.h>
#include <linux/unistd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/netdevice.h>
#include <linux/skbuff.h>
#include <net/sock.h>
#include <net/checksum.h>
#include <net/ip.h>
#include <asm/uaccess.h>
+#include <asm/ioctls.h>
#include <linux/sunrpc/types.h>
#include <linux/sunrpc/xdr.h>
diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
index dfc437522791..54f45a19c02b 100644
--- a/net/sunrpc/xprt.c
+++ b/net/sunrpc/xprt.c
@@ -47,7 +47,7 @@
#include <linux/version.h>
#include <linux/types.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/capability.h>
#include <linux/sched.h>
#include <linux/errno.h>
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
index 121e4d9de05c..a2e28fef263f 100644
--- a/net/unix/af_unix.c
+++ b/net/unix/af_unix.c
@@ -8,7 +8,7 @@
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*
- * Version: $Id: af_unix.c,v 1.109 2001/01/06 00:42:23 davem Exp $
+ * Version: $Id: af_unix.c,v 1.111 2001/02/02 11:37:28 davem Exp $
*
* Fixes:
* Linus Torvalds : Assorted bug cures.
@@ -96,7 +96,7 @@
#include <linux/net.h>
#include <linux/in.h>
#include <linux/fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/uaccess.h>
#include <linux/skbuff.h>
#include <linux/netdevice.h>
@@ -1316,9 +1316,12 @@ static int unix_stream_sendmsg(struct socket *sock, struct msghdr *msg, int len,
size=len-sent;
/* Keep two messages in the pipe so it schedules better */
- if (size > sk->sndbuf/2 - 16)
- size = sk->sndbuf/2 - 16;
+ if (size > sk->sndbuf/2 - 64)
+ size = sk->sndbuf/2 - 64;
+ if (size > (128 * 1024) / 2)
+ size = (128 * 1024) / 2;
+
/*
* Keep to page sized kmalloc()'s as various people
* have suggested. Big mallocs stress the vm too
diff --git a/net/unix/garbage.c b/net/unix/garbage.c
index 16d46de54386..bc89eef4ec52 100644
--- a/net/unix/garbage.c
+++ b/net/unix/garbage.c
@@ -71,7 +71,7 @@
#include <linux/un.h>
#include <linux/net.h>
#include <linux/fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/skbuff.h>
#include <linux/netdevice.h>
#include <linux/file.h>
diff --git a/net/wanrouter/wanmain.c b/net/wanrouter/wanmain.c
index 7f12a1f16539..26e3f913064c 100644
--- a/net/wanrouter/wanmain.c
+++ b/net/wanrouter/wanmain.c
@@ -41,7 +41,7 @@
#include <linux/errno.h> /* return codes */
#include <linux/kernel.h>
#include <linux/module.h> /* support for loadable modules */
-#include <linux/malloc.h> /* kmalloc(), kfree() */
+#include <linux/slab.h> /* kmalloc(), kfree() */
#include <linux/mm.h> /* verify_area(), etc. */
#include <linux/string.h> /* inline mem*, str* functions */
#include <linux/vmalloc.h> /* vmalloc, vfree */
diff --git a/net/wanrouter/wanproc.c b/net/wanrouter/wanproc.c
index 39d7781d057b..84833dd055dc 100644
--- a/net/wanrouter/wanproc.c
+++ b/net/wanrouter/wanproc.c
@@ -13,6 +13,7 @@
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
* ============================================================================
+* Jan 20, 2001 Arnaldo C.Melo Fix leak on error in router_proc_read, cleanups
* Jun 02, 1999 Gideon Hack Updates for Linux 2.2.X kernels.
* Jun 29, 1997 Alan Cox Merged with 1.0.3 vendor code
* Jan 29, 1997 Gene Kozin v1.0.1. Implemented /proc read routines
@@ -25,7 +26,7 @@
#include <linux/stddef.h> /* offsetof(), etc. */
#include <linux/errno.h> /* return codes */
#include <linux/kernel.h>
-#include <linux/malloc.h> /* kmalloc(), kfree() */
+#include <linux/slab.h> /* kmalloc(), kfree() */
#include <linux/mm.h> /* verify_area(), etc. */
#include <linux/string.h> /* inline mem*, str* functions */
#include <linux/init.h> /* __init et al. */
@@ -43,23 +44,9 @@
#ifndef min
#define min(a,b) (((a)<(b))?(a):(b))
#endif
-#ifndef max
-#define max(a,b) (((a)>(b))?(a):(b))
-#endif
#define PROC_BUFSZ 4000 /* buffer size for printing proc info */
-
-/****** Data Types **********************************************************/
-
-typedef struct wan_stat_entry
-{
- struct wan_stat_entry *next;
- char *description; /* description string */
- void *data; /* -> data */
- unsigned data_type; /* data type */
-} wan_stat_entry_t;
-
/****** Function Prototypes *************************************************/
#ifdef CONFIG_PROC_FS
@@ -78,7 +65,7 @@ static int wandev_get_info(char* buf, char** start, off_t offs, int len);
/*
* Structures for interfacing with the /proc filesystem.
- * Router creates its own directory /proc/net/router with the folowing
+ * Router creates its own directory /proc/net/wanrouter with the folowing
* entries:
* config device configuration
* status global device statistics
@@ -86,7 +73,7 @@ static int wandev_get_info(char* buf, char** start, off_t offs, int len);
*/
/*
- * Generic /proc/net/router/<file> file and inode operations
+ * Generic /proc/net/wanrouter/<file> file and inode operations
*/
static struct file_operations router_fops =
{
@@ -99,7 +86,7 @@ static struct inode_operations router_inode =
};
/*
- * /proc/net/router/<device> file operations
+ * /proc/net/wanrouter/<device> file operations
*/
static struct file_operations wandev_fops =
@@ -109,7 +96,7 @@ static struct file_operations wandev_fops =
};
/*
- * /proc/net/router
+ * /proc/net/wanrouter
*/
static struct proc_dir_entry *proc_router;
@@ -251,13 +238,15 @@ static ssize_t router_proc_read(struct file* file, char* buf, size_t count,
offs = file->f_pos;
if (offs < pos) {
len = min(pos - offs, count);
- if(copy_to_user(buf, (page + offs), len))
- return -EFAULT;
+ if(copy_to_user(buf, (page + offs), len)) {
+ len = -EFAULT;
+ goto out;
+ }
file->f_pos += len;
}
else
len = 0;
- kfree(page);
+out: kfree(page);
return len;
}