From afa63d44d2d96950657639b698facf373f52dfe2 Mon Sep 17 00:00:00 2001 From: "iap10@labyrinth.cl.cam.ac.uk" Date: Fri, 21 Jan 2005 00:37:54 +0000 Subject: [PATCH] bitkeeper revision 1.1159.223.8 (41f04ee28OyElXpjo4VeyXy925falg) Upgrade to linux 2.4.29 --- .rootkeys | 168 ++--- .../Makefile | 4 +- .../arch/xen/Makefile | 0 .../arch/xen/boot/Makefile | 0 .../arch/xen/config.in | 0 .../arch/xen/defconfig-xen0 | 27 +- .../arch/xen/defconfig-xenU | 7 +- .../arch/xen/drivers/balloon/Makefile | 0 .../arch/xen/drivers/blkif/Makefile | 0 .../arch/xen/drivers/blkif/backend/Makefile | 0 .../arch/xen/drivers/blkif/frontend/Makefile | 0 .../arch/xen/drivers/blkif/frontend/common.h | 0 .../arch/xen/drivers/blkif/frontend/vbd.c | 0 .../arch/xen/drivers/console/Makefile | 0 .../arch/xen/drivers/dom0/Makefile | 0 .../arch/xen/drivers/evtchn/Makefile | 0 .../arch/xen/drivers/netif/Makefile | 0 .../arch/xen/drivers/netif/backend/Makefile | 0 .../arch/xen/drivers/netif/frontend/Makefile | 0 .../arch/xen/kernel/Makefile | 0 .../arch/xen/kernel/entry.S | 0 .../arch/xen/kernel/head.S | 0 .../arch/xen/kernel/i386_ksyms.c | 0 .../arch/xen/kernel/irq.c | 0 .../arch/xen/kernel/ldt.c | 0 .../arch/xen/kernel/pci-pc.c | 0 .../arch/xen/kernel/process.c | 0 .../arch/xen/kernel/setup.c | 0 .../arch/xen/kernel/signal.c | 0 .../arch/xen/kernel/time.c | 0 .../arch/xen/kernel/traps.c | 0 .../arch/xen/lib/Makefile | 0 .../arch/xen/lib/delay.c | 0 .../arch/xen/mm/Makefile | 0 .../arch/xen/mm/fault.c | 0 .../arch/xen/mm/init.c | 0 .../arch/xen/mm/ioremap.c | 0 .../arch/xen/vmlinux.lds | 0 .../drivers/block/ll_rw_blk.c | 0 .../drivers/char/Makefile | 0 .../drivers/char/mem.c | 0 .../drivers/char/tty_io.c | 589 +++++++++++++++--- .../drivers/scsi/aic7xxx/Makefile | 0 .../fs/exec.c | 32 +- .../include/asm-xen/bugs.h | 0 .../include/asm-xen/desc.h | 0 .../include/asm-xen/fixmap.h | 0 .../include/asm-xen/highmem.h | 0 .../include/asm-xen/hw_irq.h | 0 .../include/asm-xen/io.h | 0 .../include/asm-xen/irq.h | 0 .../include/asm-xen/keyboard.h | 0 .../include/asm-xen/mmu_context.h | 0 .../include/asm-xen/module.h | 0 .../include/asm-xen/msr.h | 0 .../include/asm-xen/page.h | 0 .../include/asm-xen/pci.h | 0 .../include/asm-xen/pgalloc.h | 0 .../include/asm-xen/pgtable-2level.h | 0 .../include/asm-xen/pgtable.h | 0 .../include/asm-xen/processor.h | 0 .../include/asm-xen/queues.h | 0 .../include/asm-xen/segment.h | 0 .../include/asm-xen/smp.h | 0 .../include/asm-xen/synch_bitops.h | 0 .../include/asm-xen/system.h | 0 .../include/asm-xen/vga.h | 0 .../include/asm-xen/xor.h | 0 .../include/linux/blk.h | 0 .../include/linux/irq.h | 0 .../include/linux/mm.h | 28 +- .../include/linux/sched.h | 3 + .../include/linux/skbuff.h | 0 .../include/linux/timer.h | 0 .../kernel/time.c | 0 .../kernel/timer.c | 0 .../mkbuildtree | 0 .../mm/highmem.c | 0 .../mm/memory.c | 9 +- .../mm/mprotect.c | 0 .../mm/mremap.c | 11 + .../mm/page_alloc.c | 0 .../mm/swapfile.c | 0 .../mm/vmalloc.c | 0 .../net/core/skbuff.c | 0 85 files changed, 663 insertions(+), 215 deletions(-) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/Makefile (99%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/Makefile (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/boot/Makefile (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/config.in (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/defconfig-xen0 (97%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/defconfig-xenU (99%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/drivers/balloon/Makefile (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/drivers/blkif/Makefile (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/drivers/blkif/backend/Makefile (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/drivers/blkif/frontend/Makefile (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/drivers/blkif/frontend/common.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/drivers/blkif/frontend/vbd.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/drivers/console/Makefile (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/drivers/dom0/Makefile (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/drivers/evtchn/Makefile (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/drivers/netif/Makefile (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/drivers/netif/backend/Makefile (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/drivers/netif/frontend/Makefile (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/kernel/Makefile (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/kernel/entry.S (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/kernel/head.S (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/kernel/i386_ksyms.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/kernel/irq.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/kernel/ldt.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/kernel/pci-pc.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/kernel/process.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/kernel/setup.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/kernel/signal.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/kernel/time.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/kernel/traps.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/lib/Makefile (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/lib/delay.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/mm/Makefile (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/mm/fault.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/mm/init.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/mm/ioremap.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/arch/xen/vmlinux.lds (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/drivers/block/ll_rw_blk.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/drivers/char/Makefile (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/drivers/char/mem.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/drivers/char/tty_io.c (82%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/drivers/scsi/aic7xxx/Makefile (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/fs/exec.c (97%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/bugs.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/desc.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/fixmap.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/highmem.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/hw_irq.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/io.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/irq.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/keyboard.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/mmu_context.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/module.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/msr.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/page.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/pci.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/pgalloc.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/pgtable-2level.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/pgtable.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/processor.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/queues.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/segment.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/smp.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/synch_bitops.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/system.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/vga.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/asm-xen/xor.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/linux/blk.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/linux/irq.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/linux/mm.h (97%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/linux/sched.h (99%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/linux/skbuff.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/include/linux/timer.h (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/kernel/time.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/kernel/timer.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/mkbuildtree (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/mm/highmem.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/mm/memory.c (99%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/mm/mprotect.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/mm/mremap.c (97%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/mm/page_alloc.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/mm/swapfile.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/mm/vmalloc.c (100%) rename {linux-2.4.28-xen-sparse => linux-2.4.29-xen-sparse}/net/core/skbuff.c (100%) diff --git a/.rootkeys b/.rootkeys index 9f7ea4cd17..0e6a0705b5 100644 --- a/.rootkeys +++ b/.rootkeys @@ -44,90 +44,90 @@ 3f815145vGYx1WY79voKkZB9yKwJKQ extras/mini-os/time.c 3f815145xlKBAQmal9oces3G_Mvxqw extras/mini-os/traps.c 4187ca95_eQN62ugV1zliQcfzXrHnw install.sh -3e5a4e6589G-U42lFKs43plskXoFxQ linux-2.4.28-xen-sparse/Makefile -3e5a4e65IEPjnWPZ5w3TxS5scV8Ewg linux-2.4.28-xen-sparse/arch/xen/Makefile -3e5a4e65n-KhsEAs-A4ULiStBp-r6w linux-2.4.28-xen-sparse/arch/xen/boot/Makefile -3e5a4e65OV_j_DBtjzt5vej771AJsA linux-2.4.28-xen-sparse/arch/xen/config.in -40648526SxcA4lGIHB_k7ID8VlRSzw linux-2.4.28-xen-sparse/arch/xen/defconfig-xen0 -40c73c77QesbL7eIvG-fJGAtVwhGRg linux-2.4.28-xen-sparse/arch/xen/defconfig-xenU -3e6377f5xwPfYZkPHPrDbEq1PRN7uQ linux-2.4.28-xen-sparse/arch/xen/drivers/balloon/Makefile -4083dc16z0jvZEH4PiVDbDRreaNp6w linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/Makefile -4083dc16KQus88a4U3uCV6qVCA6_8Q linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/backend/Makefile -4075806dI5kfeMD5RV-DA0PYoThx_w linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/frontend/Makefile -4075806d4-j7vN0Mn0bklI1cRUX1vQ linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/frontend/common.h -4075806dibjCcfuXv6CINMhxWTw3jQ linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/frontend/vbd.c -3e5a4e65G3e2s0ghPMgiJ-gBTUJ0uQ linux-2.4.28-xen-sparse/arch/xen/drivers/console/Makefile -3e5a4e656nfFISThfbyXQOA6HN6YHw linux-2.4.28-xen-sparse/arch/xen/drivers/dom0/Makefile -40420a6ebRqDjufoN1WSJvolEW2Wjw linux-2.4.28-xen-sparse/arch/xen/drivers/evtchn/Makefile -4083dc16-Kd5y9psK_yk161sme5j5Q linux-2.4.28-xen-sparse/arch/xen/drivers/netif/Makefile -4083dc16UmHXxS9g_UFVnkUpN-oP2Q linux-2.4.28-xen-sparse/arch/xen/drivers/netif/backend/Makefile -405853f2wg7JXZJNltspMwOZJklxgw linux-2.4.28-xen-sparse/arch/xen/drivers/netif/frontend/Makefile -3e5a4e65lWzkiPXsZdzPt2RNnJGG1g linux-2.4.28-xen-sparse/arch/xen/kernel/Makefile -3e5a4e65_hqfuxtGG8IUy6wRM86Ecg linux-2.4.28-xen-sparse/arch/xen/kernel/entry.S -3e5a4e65Hy_1iUvMTPsNqGNXd9uFpg linux-2.4.28-xen-sparse/arch/xen/kernel/head.S -3e5a4e65RMGcuA-HCn3-wNx3fFQwdg linux-2.4.28-xen-sparse/arch/xen/kernel/i386_ksyms.c -3e5a4e653U6cELGv528IxOLHvCq8iA linux-2.4.28-xen-sparse/arch/xen/kernel/irq.c -3e5a4e65muT6SU3ck47IP87Q7Ti5hA linux-2.4.28-xen-sparse/arch/xen/kernel/ldt.c -4051db95N9N99FjsRwi49YKUNHWI8A linux-2.4.28-xen-sparse/arch/xen/kernel/pci-pc.c -3e5a4e65IGt3WwQDNiL4h-gYWgNTWQ linux-2.4.28-xen-sparse/arch/xen/kernel/process.c -3e5a4e66tR-qJMLj3MppcKqmvuI2XQ linux-2.4.28-xen-sparse/arch/xen/kernel/setup.c -3e5a4e66fWSTagLGU2P8BGFGRjhDiw linux-2.4.28-xen-sparse/arch/xen/kernel/signal.c -3e5a4e66N__lUXNwzQ-eADRzK9LXuQ linux-2.4.28-xen-sparse/arch/xen/kernel/time.c -3e5a4e66aHCbQ_F5QZ8VeyikLmuRZQ linux-2.4.28-xen-sparse/arch/xen/kernel/traps.c -3e5a4e66-9_NczrVMbuQkoSLyXckIw linux-2.4.28-xen-sparse/arch/xen/lib/Makefile -3e5a4e6637ZDk0BvFEC-aFQs599-ng linux-2.4.28-xen-sparse/arch/xen/lib/delay.c -3e5a4e66croVgpcJyJuF2ycQw0HuJw linux-2.4.28-xen-sparse/arch/xen/mm/Makefile -3e5a4e66l8Q5Tv-6B3lQIRmaVbFPzg linux-2.4.28-xen-sparse/arch/xen/mm/fault.c -3e5a4e661gLzzff25pJooKIIWe7IWg linux-2.4.28-xen-sparse/arch/xen/mm/init.c -3f0bed43UUdQichXAiVNrjV-y2Kzcg linux-2.4.28-xen-sparse/arch/xen/mm/ioremap.c -3e5a4e66qRlSTcjafidMB6ulECADvg linux-2.4.28-xen-sparse/arch/xen/vmlinux.lds -3e5a4e66mrtlmV75L1tjKDg8RaM5gA linux-2.4.28-xen-sparse/drivers/block/ll_rw_blk.c -40d70c24-Dy2HUMrwSZagfXvAPnI4w linux-2.4.28-xen-sparse/drivers/char/Makefile -3f108aeaLcGDgQdFAANLTUEid0a05w linux-2.4.28-xen-sparse/drivers/char/mem.c -3e5a4e66rw65CxyolW9PKz4GG42RcA linux-2.4.28-xen-sparse/drivers/char/tty_io.c -40c9c0c1pPwYE3-4i-oI3ubUu7UgvQ linux-2.4.28-xen-sparse/drivers/scsi/aic7xxx/Makefile -3e5a4e669uzIE54VwucPYtGwXLAbzA linux-2.4.28-xen-sparse/fs/exec.c -3e5a4e66wbeCpsJgVf_U8Jde-CNcsA linux-2.4.28-xen-sparse/include/asm-xen/bugs.h -3e5a4e66HdSkvIV6SJ1evG_xmTmXHA linux-2.4.28-xen-sparse/include/asm-xen/desc.h -3e5a4e66SYp_UpAVcF8Lc1wa3Qtgzw linux-2.4.28-xen-sparse/include/asm-xen/fixmap.h -406aeeaaQvl4RNtmd9hDEugBURbFpQ linux-2.4.28-xen-sparse/include/asm-xen/highmem.h -3e5a4e67YtcyDLQsShhCfQwPSELfvA linux-2.4.28-xen-sparse/include/asm-xen/hw_irq.h -4060044fVx7-tokvNLKBf_6qBB4lqQ linux-2.4.28-xen-sparse/include/asm-xen/io.h -3e5a4e673p7PEOyHFm3nHkYX6HQYBg linux-2.4.28-xen-sparse/include/asm-xen/irq.h -40d70c240tW7TWArl1VUgIFH2nVO1A linux-2.4.28-xen-sparse/include/asm-xen/keyboard.h -3e5a4e678ddsQOpbSiRdy1GRcDc9WA linux-2.4.28-xen-sparse/include/asm-xen/mmu_context.h -40d06e5b2YWInUX1Xv9amVANwd_2Xg linux-2.4.28-xen-sparse/include/asm-xen/module.h -3f8707e7ZmZ6TxyX0ZUEfvhA2Pb_xQ linux-2.4.28-xen-sparse/include/asm-xen/msr.h -3e5a4e67mnQfh-R8KcQCaVo2Oho6yg linux-2.4.28-xen-sparse/include/asm-xen/page.h -409ba2e7ZfV5hqTvIzxLtpClnxtIzg linux-2.4.28-xen-sparse/include/asm-xen/pci.h -3e5a4e67uTYU5oEnIDjxuaez8njjqg linux-2.4.28-xen-sparse/include/asm-xen/pgalloc.h -3e5a4e67X7JyupgdYkgDX19Huj2sAw linux-2.4.28-xen-sparse/include/asm-xen/pgtable-2level.h -3e5a4e67gr4NLGtQ5CvSLimMYZlkOA linux-2.4.28-xen-sparse/include/asm-xen/pgtable.h -3e5a4e676uK4xErTBDH6XJREn9LSyg linux-2.4.28-xen-sparse/include/asm-xen/processor.h -41224663YBCUMX1kVo_HRUtgaHTi7w linux-2.4.28-xen-sparse/include/asm-xen/queues.h -3e5a4e68uJz-xI0IBVMD7xRLQKJDFg linux-2.4.28-xen-sparse/include/asm-xen/segment.h -3e5a4e68Nfdh6QcOKUTGCaYkf2LmYA linux-2.4.28-xen-sparse/include/asm-xen/smp.h -4062f7e2PzFOUGT0PaE7A0VprTU3JQ linux-2.4.28-xen-sparse/include/asm-xen/synch_bitops.h -3e5a4e68mTr0zcp9SXDbnd-XLrrfxw linux-2.4.28-xen-sparse/include/asm-xen/system.h -3f1056a9L_kqHcFheV00KbKBzv9j5w linux-2.4.28-xen-sparse/include/asm-xen/vga.h -40659defgWA92arexpMGn8X3QMDj3w linux-2.4.28-xen-sparse/include/asm-xen/xor.h -3f056927gMHl7mWB89rb73JahbhQIA linux-2.4.28-xen-sparse/include/linux/blk.h -419e0488SBzS3mdUhwgsES5a5e3abA linux-2.4.28-xen-sparse/include/linux/irq.h -4124f66fPHG6yvB_vXmesjvzrJ3yMg linux-2.4.28-xen-sparse/include/linux/mm.h -401c0590D_kwJDU59X8NyvqSv_Cl2A linux-2.4.28-xen-sparse/include/linux/sched.h -40a248afgI0_JKthdYAe8beVfXSTpQ linux-2.4.28-xen-sparse/include/linux/skbuff.h -401c0592pLrp_aCbQRo9GXiYQQaVVA linux-2.4.28-xen-sparse/include/linux/timer.h -3f9d4b44247udoqWEgFkaHiWv6Uvyg linux-2.4.28-xen-sparse/kernel/time.c -401c059bjLBFYHRD4Py2uM3eA1D4zQ linux-2.4.28-xen-sparse/kernel/timer.c -3e6e7c1efbQe93xCvOpOVCnXTMmQ5w linux-2.4.28-xen-sparse/mkbuildtree -406aeeafkrnCuIVWLFv3kfn4uAD5Eg linux-2.4.28-xen-sparse/mm/highmem.c -3e5a4e68GxCIaFH4sy01v1wjapetaA linux-2.4.28-xen-sparse/mm/memory.c -3f108af5VxPkLv13tXpXgoRKALQtXQ linux-2.4.28-xen-sparse/mm/mprotect.c -3e5a4e681xMPdF9xCMwpyfuYMySU5g linux-2.4.28-xen-sparse/mm/mremap.c -409ba2e7akOFqQUg6Qyg2s28xcXiMg linux-2.4.28-xen-sparse/mm/page_alloc.c -3e5a4e683HKVU-sxtagrDasRB8eBVw linux-2.4.28-xen-sparse/mm/swapfile.c -41180721bNns9Na7w1nJ0ZVt8bhUNA linux-2.4.28-xen-sparse/mm/vmalloc.c -41505c57WAd5l1rlfCLNSCpx9J13vA linux-2.4.28-xen-sparse/net/core/skbuff.c +3e5a4e6589G-U42lFKs43plskXoFxQ linux-2.4.29-xen-sparse/Makefile +3e5a4e65IEPjnWPZ5w3TxS5scV8Ewg linux-2.4.29-xen-sparse/arch/xen/Makefile +3e5a4e65n-KhsEAs-A4ULiStBp-r6w linux-2.4.29-xen-sparse/arch/xen/boot/Makefile +3e5a4e65OV_j_DBtjzt5vej771AJsA linux-2.4.29-xen-sparse/arch/xen/config.in +40648526SxcA4lGIHB_k7ID8VlRSzw linux-2.4.29-xen-sparse/arch/xen/defconfig-xen0 +40c73c77QesbL7eIvG-fJGAtVwhGRg linux-2.4.29-xen-sparse/arch/xen/defconfig-xenU +3e6377f5xwPfYZkPHPrDbEq1PRN7uQ linux-2.4.29-xen-sparse/arch/xen/drivers/balloon/Makefile +4083dc16z0jvZEH4PiVDbDRreaNp6w linux-2.4.29-xen-sparse/arch/xen/drivers/blkif/Makefile +4083dc16KQus88a4U3uCV6qVCA6_8Q linux-2.4.29-xen-sparse/arch/xen/drivers/blkif/backend/Makefile +4075806dI5kfeMD5RV-DA0PYoThx_w linux-2.4.29-xen-sparse/arch/xen/drivers/blkif/frontend/Makefile +4075806d4-j7vN0Mn0bklI1cRUX1vQ linux-2.4.29-xen-sparse/arch/xen/drivers/blkif/frontend/common.h +4075806dibjCcfuXv6CINMhxWTw3jQ linux-2.4.29-xen-sparse/arch/xen/drivers/blkif/frontend/vbd.c +3e5a4e65G3e2s0ghPMgiJ-gBTUJ0uQ linux-2.4.29-xen-sparse/arch/xen/drivers/console/Makefile +3e5a4e656nfFISThfbyXQOA6HN6YHw linux-2.4.29-xen-sparse/arch/xen/drivers/dom0/Makefile +40420a6ebRqDjufoN1WSJvolEW2Wjw linux-2.4.29-xen-sparse/arch/xen/drivers/evtchn/Makefile +4083dc16-Kd5y9psK_yk161sme5j5Q linux-2.4.29-xen-sparse/arch/xen/drivers/netif/Makefile +4083dc16UmHXxS9g_UFVnkUpN-oP2Q linux-2.4.29-xen-sparse/arch/xen/drivers/netif/backend/Makefile +405853f2wg7JXZJNltspMwOZJklxgw linux-2.4.29-xen-sparse/arch/xen/drivers/netif/frontend/Makefile +3e5a4e65lWzkiPXsZdzPt2RNnJGG1g linux-2.4.29-xen-sparse/arch/xen/kernel/Makefile +3e5a4e65_hqfuxtGG8IUy6wRM86Ecg linux-2.4.29-xen-sparse/arch/xen/kernel/entry.S +3e5a4e65Hy_1iUvMTPsNqGNXd9uFpg linux-2.4.29-xen-sparse/arch/xen/kernel/head.S +3e5a4e65RMGcuA-HCn3-wNx3fFQwdg linux-2.4.29-xen-sparse/arch/xen/kernel/i386_ksyms.c +3e5a4e653U6cELGv528IxOLHvCq8iA linux-2.4.29-xen-sparse/arch/xen/kernel/irq.c +3e5a4e65muT6SU3ck47IP87Q7Ti5hA linux-2.4.29-xen-sparse/arch/xen/kernel/ldt.c +4051db95N9N99FjsRwi49YKUNHWI8A linux-2.4.29-xen-sparse/arch/xen/kernel/pci-pc.c +3e5a4e65IGt3WwQDNiL4h-gYWgNTWQ linux-2.4.29-xen-sparse/arch/xen/kernel/process.c +3e5a4e66tR-qJMLj3MppcKqmvuI2XQ linux-2.4.29-xen-sparse/arch/xen/kernel/setup.c +3e5a4e66fWSTagLGU2P8BGFGRjhDiw linux-2.4.29-xen-sparse/arch/xen/kernel/signal.c +3e5a4e66N__lUXNwzQ-eADRzK9LXuQ linux-2.4.29-xen-sparse/arch/xen/kernel/time.c +3e5a4e66aHCbQ_F5QZ8VeyikLmuRZQ linux-2.4.29-xen-sparse/arch/xen/kernel/traps.c +3e5a4e66-9_NczrVMbuQkoSLyXckIw linux-2.4.29-xen-sparse/arch/xen/lib/Makefile +3e5a4e6637ZDk0BvFEC-aFQs599-ng linux-2.4.29-xen-sparse/arch/xen/lib/delay.c +3e5a4e66croVgpcJyJuF2ycQw0HuJw linux-2.4.29-xen-sparse/arch/xen/mm/Makefile +3e5a4e66l8Q5Tv-6B3lQIRmaVbFPzg linux-2.4.29-xen-sparse/arch/xen/mm/fault.c +3e5a4e661gLzzff25pJooKIIWe7IWg linux-2.4.29-xen-sparse/arch/xen/mm/init.c +3f0bed43UUdQichXAiVNrjV-y2Kzcg linux-2.4.29-xen-sparse/arch/xen/mm/ioremap.c +3e5a4e66qRlSTcjafidMB6ulECADvg linux-2.4.29-xen-sparse/arch/xen/vmlinux.lds +3e5a4e66mrtlmV75L1tjKDg8RaM5gA linux-2.4.29-xen-sparse/drivers/block/ll_rw_blk.c +40d70c24-Dy2HUMrwSZagfXvAPnI4w linux-2.4.29-xen-sparse/drivers/char/Makefile +3f108aeaLcGDgQdFAANLTUEid0a05w linux-2.4.29-xen-sparse/drivers/char/mem.c +3e5a4e66rw65CxyolW9PKz4GG42RcA linux-2.4.29-xen-sparse/drivers/char/tty_io.c +40c9c0c1pPwYE3-4i-oI3ubUu7UgvQ linux-2.4.29-xen-sparse/drivers/scsi/aic7xxx/Makefile +3e5a4e669uzIE54VwucPYtGwXLAbzA linux-2.4.29-xen-sparse/fs/exec.c +3e5a4e66wbeCpsJgVf_U8Jde-CNcsA linux-2.4.29-xen-sparse/include/asm-xen/bugs.h +3e5a4e66HdSkvIV6SJ1evG_xmTmXHA linux-2.4.29-xen-sparse/include/asm-xen/desc.h +3e5a4e66SYp_UpAVcF8Lc1wa3Qtgzw linux-2.4.29-xen-sparse/include/asm-xen/fixmap.h +406aeeaaQvl4RNtmd9hDEugBURbFpQ linux-2.4.29-xen-sparse/include/asm-xen/highmem.h +3e5a4e67YtcyDLQsShhCfQwPSELfvA linux-2.4.29-xen-sparse/include/asm-xen/hw_irq.h +4060044fVx7-tokvNLKBf_6qBB4lqQ linux-2.4.29-xen-sparse/include/asm-xen/io.h +3e5a4e673p7PEOyHFm3nHkYX6HQYBg linux-2.4.29-xen-sparse/include/asm-xen/irq.h +40d70c240tW7TWArl1VUgIFH2nVO1A linux-2.4.29-xen-sparse/include/asm-xen/keyboard.h +3e5a4e678ddsQOpbSiRdy1GRcDc9WA linux-2.4.29-xen-sparse/include/asm-xen/mmu_context.h +40d06e5b2YWInUX1Xv9amVANwd_2Xg linux-2.4.29-xen-sparse/include/asm-xen/module.h +3f8707e7ZmZ6TxyX0ZUEfvhA2Pb_xQ linux-2.4.29-xen-sparse/include/asm-xen/msr.h +3e5a4e67mnQfh-R8KcQCaVo2Oho6yg linux-2.4.29-xen-sparse/include/asm-xen/page.h +409ba2e7ZfV5hqTvIzxLtpClnxtIzg linux-2.4.29-xen-sparse/include/asm-xen/pci.h +3e5a4e67uTYU5oEnIDjxuaez8njjqg linux-2.4.29-xen-sparse/include/asm-xen/pgalloc.h +3e5a4e67X7JyupgdYkgDX19Huj2sAw linux-2.4.29-xen-sparse/include/asm-xen/pgtable-2level.h +3e5a4e67gr4NLGtQ5CvSLimMYZlkOA linux-2.4.29-xen-sparse/include/asm-xen/pgtable.h +3e5a4e676uK4xErTBDH6XJREn9LSyg linux-2.4.29-xen-sparse/include/asm-xen/processor.h +41224663YBCUMX1kVo_HRUtgaHTi7w linux-2.4.29-xen-sparse/include/asm-xen/queues.h +3e5a4e68uJz-xI0IBVMD7xRLQKJDFg linux-2.4.29-xen-sparse/include/asm-xen/segment.h +3e5a4e68Nfdh6QcOKUTGCaYkf2LmYA linux-2.4.29-xen-sparse/include/asm-xen/smp.h +4062f7e2PzFOUGT0PaE7A0VprTU3JQ linux-2.4.29-xen-sparse/include/asm-xen/synch_bitops.h +3e5a4e68mTr0zcp9SXDbnd-XLrrfxw linux-2.4.29-xen-sparse/include/asm-xen/system.h +3f1056a9L_kqHcFheV00KbKBzv9j5w linux-2.4.29-xen-sparse/include/asm-xen/vga.h +40659defgWA92arexpMGn8X3QMDj3w linux-2.4.29-xen-sparse/include/asm-xen/xor.h +3f056927gMHl7mWB89rb73JahbhQIA linux-2.4.29-xen-sparse/include/linux/blk.h +419e0488SBzS3mdUhwgsES5a5e3abA linux-2.4.29-xen-sparse/include/linux/irq.h +4124f66fPHG6yvB_vXmesjvzrJ3yMg linux-2.4.29-xen-sparse/include/linux/mm.h +401c0590D_kwJDU59X8NyvqSv_Cl2A linux-2.4.29-xen-sparse/include/linux/sched.h +40a248afgI0_JKthdYAe8beVfXSTpQ linux-2.4.29-xen-sparse/include/linux/skbuff.h +401c0592pLrp_aCbQRo9GXiYQQaVVA linux-2.4.29-xen-sparse/include/linux/timer.h +3f9d4b44247udoqWEgFkaHiWv6Uvyg linux-2.4.29-xen-sparse/kernel/time.c +401c059bjLBFYHRD4Py2uM3eA1D4zQ linux-2.4.29-xen-sparse/kernel/timer.c +3e6e7c1efbQe93xCvOpOVCnXTMmQ5w linux-2.4.29-xen-sparse/mkbuildtree +406aeeafkrnCuIVWLFv3kfn4uAD5Eg linux-2.4.29-xen-sparse/mm/highmem.c +3e5a4e68GxCIaFH4sy01v1wjapetaA linux-2.4.29-xen-sparse/mm/memory.c +3f108af5VxPkLv13tXpXgoRKALQtXQ linux-2.4.29-xen-sparse/mm/mprotect.c +3e5a4e681xMPdF9xCMwpyfuYMySU5g linux-2.4.29-xen-sparse/mm/mremap.c +409ba2e7akOFqQUg6Qyg2s28xcXiMg linux-2.4.29-xen-sparse/mm/page_alloc.c +3e5a4e683HKVU-sxtagrDasRB8eBVw linux-2.4.29-xen-sparse/mm/swapfile.c +41180721bNns9Na7w1nJ0ZVt8bhUNA linux-2.4.29-xen-sparse/mm/vmalloc.c +41505c57WAd5l1rlfCLNSCpx9J13vA linux-2.4.29-xen-sparse/net/core/skbuff.c 40f562372u3A7_kfbYYixPHJJxYUxA linux-2.6.10-xen-sparse/arch/xen/Kconfig 40f56237utH41NPukqHksuNf29IC9A linux-2.6.10-xen-sparse/arch/xen/Kconfig.drivers 40f56237penAAlWVBVDpeQZNFIg8CA linux-2.6.10-xen-sparse/arch/xen/Makefile diff --git a/linux-2.4.28-xen-sparse/Makefile b/linux-2.4.29-xen-sparse/Makefile similarity index 99% rename from linux-2.4.28-xen-sparse/Makefile rename to linux-2.4.29-xen-sparse/Makefile index 70df708495..29bcb96ccc 100644 --- a/linux-2.4.28-xen-sparse/Makefile +++ b/linux-2.4.29-xen-sparse/Makefile @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 4 -SUBLEVEL = 28 -EXTRAVERSION = +SUBLEVEL = 29 +EXTRAVERSION =-xenU KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) diff --git a/linux-2.4.28-xen-sparse/arch/xen/Makefile b/linux-2.4.29-xen-sparse/arch/xen/Makefile similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/Makefile rename to linux-2.4.29-xen-sparse/arch/xen/Makefile diff --git a/linux-2.4.28-xen-sparse/arch/xen/boot/Makefile b/linux-2.4.29-xen-sparse/arch/xen/boot/Makefile similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/boot/Makefile rename to linux-2.4.29-xen-sparse/arch/xen/boot/Makefile diff --git a/linux-2.4.28-xen-sparse/arch/xen/config.in b/linux-2.4.29-xen-sparse/arch/xen/config.in similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/config.in rename to linux-2.4.29-xen-sparse/arch/xen/config.in diff --git a/linux-2.4.28-xen-sparse/arch/xen/defconfig-xen0 b/linux-2.4.29-xen-sparse/arch/xen/defconfig-xen0 similarity index 97% rename from linux-2.4.28-xen-sparse/arch/xen/defconfig-xen0 rename to linux-2.4.29-xen-sparse/arch/xen/defconfig-xen0 index ab9728239a..ace090e76d 100644 --- a/linux-2.4.28-xen-sparse/arch/xen/defconfig-xen0 +++ b/linux-2.4.29-xen-sparse/arch/xen/defconfig-xen0 @@ -188,7 +188,6 @@ CONFIG_IP_NF_MATCH_STATE=m CONFIG_IP_NF_MATCH_CONNTRACK=m # CONFIG_IP_NF_MATCH_UNCLEAN is not set # CONFIG_IP_NF_MATCH_OWNER is not set -CONFIG_IP_NF_MATCH_PHYSDEV=y CONFIG_IP_NF_FILTER=y CONFIG_IP_NF_TARGET_REJECT=y # CONFIG_IP_NF_TARGET_MIRROR is not set @@ -196,7 +195,6 @@ CONFIG_IP_NF_NAT=m CONFIG_IP_NF_NAT_NEEDED=y CONFIG_IP_NF_TARGET_MASQUERADE=m CONFIG_IP_NF_TARGET_REDIRECT=m -# CONFIG_IP_NF_NAT_LOCAL is not set # CONFIG_IP_NF_NAT_SNMP_BASIC is not set CONFIG_IP_NF_NAT_IRC=m CONFIG_IP_NF_NAT_FTP=m @@ -226,32 +224,8 @@ CONFIG_VLAN_8021Q=y # # CONFIG_IPX is not set # CONFIG_ATALK is not set - -# -# Appletalk devices -# -# CONFIG_DEV_APPLETALK is not set # CONFIG_DECNET is not set CONFIG_BRIDGE=y -CONFIG_BRIDGE_NF_EBTABLES=m -CONFIG_BRIDGE_EBT_T_FILTER=m -CONFIG_BRIDGE_EBT_T_NAT=m -CONFIG_BRIDGE_EBT_BROUTE=m -CONFIG_BRIDGE_EBT_LOG=m -CONFIG_BRIDGE_EBT_IPF=m -CONFIG_BRIDGE_EBT_ARPF=m -CONFIG_BRIDGE_EBT_AMONG=m -CONFIG_BRIDGE_EBT_LIMIT=m -CONFIG_BRIDGE_EBT_VLANF=m -CONFIG_BRIDGE_EBT_802_3=m -CONFIG_BRIDGE_EBT_PKTTYPE=m -CONFIG_BRIDGE_EBT_STP=m -CONFIG_BRIDGE_EBT_MARKF=m -CONFIG_BRIDGE_EBT_ARPREPLY=m -CONFIG_BRIDGE_EBT_SNAT=m -CONFIG_BRIDGE_EBT_DNAT=m -CONFIG_BRIDGE_EBT_REDIRECT=m -CONFIG_BRIDGE_EBT_MARK_T=m # CONFIG_X25 is not set # CONFIG_LAPB is not set # CONFIG_LLC is not set @@ -421,6 +395,7 @@ CONFIG_AIC79XX_DEBUG_MASK=0 CONFIG_SCSI_MEGARAID=y # CONFIG_SCSI_MEGARAID2 is not set CONFIG_SCSI_SATA=y +# CONFIG_SCSI_SATA_AHCI is not set # CONFIG_SCSI_SATA_SVW is not set CONFIG_SCSI_ATA_PIIX=y # CONFIG_SCSI_SATA_NV is not set diff --git a/linux-2.4.28-xen-sparse/arch/xen/defconfig-xenU b/linux-2.4.29-xen-sparse/arch/xen/defconfig-xenU similarity index 99% rename from linux-2.4.28-xen-sparse/arch/xen/defconfig-xenU rename to linux-2.4.29-xen-sparse/arch/xen/defconfig-xenU index 555f7e82f9..6527523b71 100644 --- a/linux-2.4.28-xen-sparse/arch/xen/defconfig-xenU +++ b/linux-2.4.29-xen-sparse/arch/xen/defconfig-xenU @@ -130,7 +130,6 @@ CONFIG_IP_NF_NAT=y CONFIG_IP_NF_NAT_NEEDED=y CONFIG_IP_NF_TARGET_MASQUERADE=y CONFIG_IP_NF_TARGET_REDIRECT=y -# CONFIG_IP_NF_NAT_LOCAL is not set # CONFIG_IP_NF_NAT_SNMP_BASIC is not set CONFIG_IP_NF_NAT_IRC=y CONFIG_IP_NF_NAT_FTP=y @@ -160,11 +159,6 @@ CONFIG_VLAN_8021Q=y # # CONFIG_IPX is not set # CONFIG_ATALK is not set - -# -# Appletalk devices -# -# CONFIG_DEV_APPLETALK is not set # CONFIG_DECNET is not set # CONFIG_BRIDGE is not set # CONFIG_X25 is not set @@ -228,6 +222,7 @@ CONFIG_CHR_DEV_SG=y # CONFIG_SCSI_MEGARAID is not set # CONFIG_SCSI_MEGARAID2 is not set # CONFIG_SCSI_SATA is not set +# CONFIG_SCSI_SATA_AHCI is not set # CONFIG_SCSI_SATA_SVW is not set # CONFIG_SCSI_ATA_PIIX is not set # CONFIG_SCSI_SATA_NV is not set diff --git a/linux-2.4.28-xen-sparse/arch/xen/drivers/balloon/Makefile b/linux-2.4.29-xen-sparse/arch/xen/drivers/balloon/Makefile similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/drivers/balloon/Makefile rename to linux-2.4.29-xen-sparse/arch/xen/drivers/balloon/Makefile diff --git a/linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/Makefile b/linux-2.4.29-xen-sparse/arch/xen/drivers/blkif/Makefile similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/Makefile rename to linux-2.4.29-xen-sparse/arch/xen/drivers/blkif/Makefile diff --git a/linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/backend/Makefile b/linux-2.4.29-xen-sparse/arch/xen/drivers/blkif/backend/Makefile similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/backend/Makefile rename to linux-2.4.29-xen-sparse/arch/xen/drivers/blkif/backend/Makefile diff --git a/linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/frontend/Makefile b/linux-2.4.29-xen-sparse/arch/xen/drivers/blkif/frontend/Makefile similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/frontend/Makefile rename to linux-2.4.29-xen-sparse/arch/xen/drivers/blkif/frontend/Makefile diff --git a/linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/frontend/common.h b/linux-2.4.29-xen-sparse/arch/xen/drivers/blkif/frontend/common.h similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/frontend/common.h rename to linux-2.4.29-xen-sparse/arch/xen/drivers/blkif/frontend/common.h diff --git a/linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/frontend/vbd.c b/linux-2.4.29-xen-sparse/arch/xen/drivers/blkif/frontend/vbd.c similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/drivers/blkif/frontend/vbd.c rename to linux-2.4.29-xen-sparse/arch/xen/drivers/blkif/frontend/vbd.c diff --git a/linux-2.4.28-xen-sparse/arch/xen/drivers/console/Makefile b/linux-2.4.29-xen-sparse/arch/xen/drivers/console/Makefile similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/drivers/console/Makefile rename to linux-2.4.29-xen-sparse/arch/xen/drivers/console/Makefile diff --git a/linux-2.4.28-xen-sparse/arch/xen/drivers/dom0/Makefile b/linux-2.4.29-xen-sparse/arch/xen/drivers/dom0/Makefile similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/drivers/dom0/Makefile rename to linux-2.4.29-xen-sparse/arch/xen/drivers/dom0/Makefile diff --git a/linux-2.4.28-xen-sparse/arch/xen/drivers/evtchn/Makefile b/linux-2.4.29-xen-sparse/arch/xen/drivers/evtchn/Makefile similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/drivers/evtchn/Makefile rename to linux-2.4.29-xen-sparse/arch/xen/drivers/evtchn/Makefile diff --git a/linux-2.4.28-xen-sparse/arch/xen/drivers/netif/Makefile b/linux-2.4.29-xen-sparse/arch/xen/drivers/netif/Makefile similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/drivers/netif/Makefile rename to linux-2.4.29-xen-sparse/arch/xen/drivers/netif/Makefile diff --git a/linux-2.4.28-xen-sparse/arch/xen/drivers/netif/backend/Makefile b/linux-2.4.29-xen-sparse/arch/xen/drivers/netif/backend/Makefile similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/drivers/netif/backend/Makefile rename to linux-2.4.29-xen-sparse/arch/xen/drivers/netif/backend/Makefile diff --git a/linux-2.4.28-xen-sparse/arch/xen/drivers/netif/frontend/Makefile b/linux-2.4.29-xen-sparse/arch/xen/drivers/netif/frontend/Makefile similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/drivers/netif/frontend/Makefile rename to linux-2.4.29-xen-sparse/arch/xen/drivers/netif/frontend/Makefile diff --git a/linux-2.4.28-xen-sparse/arch/xen/kernel/Makefile b/linux-2.4.29-xen-sparse/arch/xen/kernel/Makefile similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/kernel/Makefile rename to linux-2.4.29-xen-sparse/arch/xen/kernel/Makefile diff --git a/linux-2.4.28-xen-sparse/arch/xen/kernel/entry.S b/linux-2.4.29-xen-sparse/arch/xen/kernel/entry.S similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/kernel/entry.S rename to linux-2.4.29-xen-sparse/arch/xen/kernel/entry.S diff --git a/linux-2.4.28-xen-sparse/arch/xen/kernel/head.S b/linux-2.4.29-xen-sparse/arch/xen/kernel/head.S similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/kernel/head.S rename to linux-2.4.29-xen-sparse/arch/xen/kernel/head.S diff --git a/linux-2.4.28-xen-sparse/arch/xen/kernel/i386_ksyms.c b/linux-2.4.29-xen-sparse/arch/xen/kernel/i386_ksyms.c similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/kernel/i386_ksyms.c rename to linux-2.4.29-xen-sparse/arch/xen/kernel/i386_ksyms.c diff --git a/linux-2.4.28-xen-sparse/arch/xen/kernel/irq.c b/linux-2.4.29-xen-sparse/arch/xen/kernel/irq.c similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/kernel/irq.c rename to linux-2.4.29-xen-sparse/arch/xen/kernel/irq.c diff --git a/linux-2.4.28-xen-sparse/arch/xen/kernel/ldt.c b/linux-2.4.29-xen-sparse/arch/xen/kernel/ldt.c similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/kernel/ldt.c rename to linux-2.4.29-xen-sparse/arch/xen/kernel/ldt.c diff --git a/linux-2.4.28-xen-sparse/arch/xen/kernel/pci-pc.c b/linux-2.4.29-xen-sparse/arch/xen/kernel/pci-pc.c similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/kernel/pci-pc.c rename to linux-2.4.29-xen-sparse/arch/xen/kernel/pci-pc.c diff --git a/linux-2.4.28-xen-sparse/arch/xen/kernel/process.c b/linux-2.4.29-xen-sparse/arch/xen/kernel/process.c similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/kernel/process.c rename to linux-2.4.29-xen-sparse/arch/xen/kernel/process.c diff --git a/linux-2.4.28-xen-sparse/arch/xen/kernel/setup.c b/linux-2.4.29-xen-sparse/arch/xen/kernel/setup.c similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/kernel/setup.c rename to linux-2.4.29-xen-sparse/arch/xen/kernel/setup.c diff --git a/linux-2.4.28-xen-sparse/arch/xen/kernel/signal.c b/linux-2.4.29-xen-sparse/arch/xen/kernel/signal.c similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/kernel/signal.c rename to linux-2.4.29-xen-sparse/arch/xen/kernel/signal.c diff --git a/linux-2.4.28-xen-sparse/arch/xen/kernel/time.c b/linux-2.4.29-xen-sparse/arch/xen/kernel/time.c similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/kernel/time.c rename to linux-2.4.29-xen-sparse/arch/xen/kernel/time.c diff --git a/linux-2.4.28-xen-sparse/arch/xen/kernel/traps.c b/linux-2.4.29-xen-sparse/arch/xen/kernel/traps.c similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/kernel/traps.c rename to linux-2.4.29-xen-sparse/arch/xen/kernel/traps.c diff --git a/linux-2.4.28-xen-sparse/arch/xen/lib/Makefile b/linux-2.4.29-xen-sparse/arch/xen/lib/Makefile similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/lib/Makefile rename to linux-2.4.29-xen-sparse/arch/xen/lib/Makefile diff --git a/linux-2.4.28-xen-sparse/arch/xen/lib/delay.c b/linux-2.4.29-xen-sparse/arch/xen/lib/delay.c similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/lib/delay.c rename to linux-2.4.29-xen-sparse/arch/xen/lib/delay.c diff --git a/linux-2.4.28-xen-sparse/arch/xen/mm/Makefile b/linux-2.4.29-xen-sparse/arch/xen/mm/Makefile similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/mm/Makefile rename to linux-2.4.29-xen-sparse/arch/xen/mm/Makefile diff --git a/linux-2.4.28-xen-sparse/arch/xen/mm/fault.c b/linux-2.4.29-xen-sparse/arch/xen/mm/fault.c similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/mm/fault.c rename to linux-2.4.29-xen-sparse/arch/xen/mm/fault.c diff --git a/linux-2.4.28-xen-sparse/arch/xen/mm/init.c b/linux-2.4.29-xen-sparse/arch/xen/mm/init.c similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/mm/init.c rename to linux-2.4.29-xen-sparse/arch/xen/mm/init.c diff --git a/linux-2.4.28-xen-sparse/arch/xen/mm/ioremap.c b/linux-2.4.29-xen-sparse/arch/xen/mm/ioremap.c similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/mm/ioremap.c rename to linux-2.4.29-xen-sparse/arch/xen/mm/ioremap.c diff --git a/linux-2.4.28-xen-sparse/arch/xen/vmlinux.lds b/linux-2.4.29-xen-sparse/arch/xen/vmlinux.lds similarity index 100% rename from linux-2.4.28-xen-sparse/arch/xen/vmlinux.lds rename to linux-2.4.29-xen-sparse/arch/xen/vmlinux.lds diff --git a/linux-2.4.28-xen-sparse/drivers/block/ll_rw_blk.c b/linux-2.4.29-xen-sparse/drivers/block/ll_rw_blk.c similarity index 100% rename from linux-2.4.28-xen-sparse/drivers/block/ll_rw_blk.c rename to linux-2.4.29-xen-sparse/drivers/block/ll_rw_blk.c diff --git a/linux-2.4.28-xen-sparse/drivers/char/Makefile b/linux-2.4.29-xen-sparse/drivers/char/Makefile similarity index 100% rename from linux-2.4.28-xen-sparse/drivers/char/Makefile rename to linux-2.4.29-xen-sparse/drivers/char/Makefile diff --git a/linux-2.4.28-xen-sparse/drivers/char/mem.c b/linux-2.4.29-xen-sparse/drivers/char/mem.c similarity index 100% rename from linux-2.4.28-xen-sparse/drivers/char/mem.c rename to linux-2.4.29-xen-sparse/drivers/char/mem.c diff --git a/linux-2.4.28-xen-sparse/drivers/char/tty_io.c b/linux-2.4.29-xen-sparse/drivers/char/tty_io.c similarity index 82% rename from linux-2.4.28-xen-sparse/drivers/char/tty_io.c rename to linux-2.4.29-xen-sparse/drivers/char/tty_io.c index 3a568eb5bc..c08218e8cc 100644 --- a/linux-2.4.28-xen-sparse/drivers/char/tty_io.c +++ b/linux-2.4.29-xen-sparse/drivers/char/tty_io.c @@ -124,7 +124,6 @@ extern void disable_early_printk(void); struct termios tty_std_termios; /* for the benefit of tty drivers */ struct tty_driver *tty_drivers; /* linked list of tty drivers */ -struct tty_ldisc ldiscs[NR_LDISCS]; /* line disc dispatch table */ #ifdef CONFIG_UNIX98_PTYS extern struct tty_driver ptm_driver[]; /* Unix98 pty masters; for /dev/ptmx */ @@ -264,63 +263,314 @@ static int check_tty_count(struct tty_struct *tty, const char *routine) return 0; } +/* + * This is probably overkill for real world processors but + * they are not on hot paths so a little discipline won't do + * any harm. + */ + +static void tty_set_termios_ldisc(struct tty_struct *tty, int num) +{ + down(&tty->termios_sem); + tty->termios->c_line = num; + up(&tty->termios_sem); +} + +/* + * This guards the refcounted line discipline lists. The lock + * must be taken with irqs off because there are hangup path + * callers who will do ldisc lookups and cannot sleep. + */ + +spinlock_t tty_ldisc_lock = SPIN_LOCK_UNLOCKED; +DECLARE_WAIT_QUEUE_HEAD(tty_ldisc_wait); +struct tty_ldisc tty_ldiscs[NR_LDISCS]; /* line disc dispatch table */ + int tty_register_ldisc(int disc, struct tty_ldisc *new_ldisc) { + + unsigned long flags; + int ret = 0; + if (disc < N_TTY || disc >= NR_LDISCS) return -EINVAL; - + + spin_lock_irqsave(&tty_ldisc_lock, flags); if (new_ldisc) { - ldiscs[disc] = *new_ldisc; - ldiscs[disc].flags |= LDISC_FLAG_DEFINED; - ldiscs[disc].num = disc; - } else - memset(&ldiscs[disc], 0, sizeof(struct tty_ldisc)); + tty_ldiscs[disc] = *new_ldisc; + tty_ldiscs[disc].num = disc; + tty_ldiscs[disc].flags |= LDISC_FLAG_DEFINED; + tty_ldiscs[disc].refcount = 0; + } else { + if(tty_ldiscs[disc].refcount) + ret = -EBUSY; + else + tty_ldiscs[disc].flags &= ~LDISC_FLAG_DEFINED; + } + spin_unlock_irqrestore(&tty_ldisc_lock, flags); - return 0; + return ret; + } + EXPORT_SYMBOL(tty_register_ldisc); -/* Set the discipline of a tty line. */ +struct tty_ldisc *tty_ldisc_get(int disc) +{ + unsigned long flags; + struct tty_ldisc *ld; + + if (disc < N_TTY || disc >= NR_LDISCS) + return NULL; + + spin_lock_irqsave(&tty_ldisc_lock, flags); + + ld = &tty_ldiscs[disc]; + /* Check the entry is defined */ + if(ld->flags & LDISC_FLAG_DEFINED) + ld->refcount++; + else + ld = NULL; + spin_unlock_irqrestore(&tty_ldisc_lock, flags); + return ld; +} + +EXPORT_SYMBOL_GPL(tty_ldisc_get); + +void tty_ldisc_put(int disc) +{ + struct tty_ldisc *ld; + unsigned long flags; + + if (disc < N_TTY || disc >= NR_LDISCS) + BUG(); + + spin_lock_irqsave(&tty_ldisc_lock, flags); + ld = &tty_ldiscs[disc]; + if(ld->refcount <= 0) + BUG(); + ld->refcount--; + spin_unlock_irqrestore(&tty_ldisc_lock, flags); +} + +EXPORT_SYMBOL_GPL(tty_ldisc_put); + +void tty_ldisc_assign(struct tty_struct *tty, struct tty_ldisc *ld) +{ + tty->ldisc = *ld; + tty->ldisc.refcount = 0; +} + +/** + * tty_ldisc_try - internal helper + * @tty: the tty + * + * Make a single attempt to grab and bump the refcount on + * the tty ldisc. Return 0 on failure or 1 on success. This is + * used to implement both the waiting and non waiting versions + * of tty_ldisc_ref + */ + +static int tty_ldisc_try(struct tty_struct *tty) +{ + unsigned long flags; + struct tty_ldisc *ld; + int ret = 0; + + spin_lock_irqsave(&tty_ldisc_lock, flags); + ld = &tty->ldisc; + if(test_bit(TTY_LDISC, &tty->flags)) + { + ld->refcount++; + ret = 1; + } + spin_unlock_irqrestore(&tty_ldisc_lock, flags); + return ret; +} + +/** + * tty_ldisc_ref_wait - wait for the tty ldisc + * @tty: tty device + * + * Dereference the line discipline for the terminal and take a + * reference to it. If the line discipline is in flux then + * wait patiently until it changes. + * + * Note: Must not be called from an IRQ/timer context. The caller + * must also be careful not to hold other locks that will deadlock + * against a discipline change, such as an existing ldisc reference + * (which we check for) + */ + +struct tty_ldisc *tty_ldisc_ref_wait(struct tty_struct *tty) +{ + /* wait_event is a macro */ + wait_event(tty_ldisc_wait, tty_ldisc_try(tty)); + return &tty->ldisc; +} + +EXPORT_SYMBOL_GPL(tty_ldisc_ref_wait); + +/** + * tty_ldisc_ref - get the tty ldisc + * @tty: tty device + * + * Dereference the line discipline for the terminal and take a + * reference to it. If the line discipline is in flux then + * return NULL. Can be called from IRQ and timer functions. + */ + +struct tty_ldisc *tty_ldisc_ref(struct tty_struct *tty) +{ + if(tty_ldisc_try(tty)) + return &tty->ldisc; + return NULL; +} + +EXPORT_SYMBOL_GPL(tty_ldisc_ref); + + +void tty_ldisc_deref(struct tty_ldisc *ld) +{ + + unsigned long flags; + + if(ld == NULL) + BUG(); + + spin_lock_irqsave(&tty_ldisc_lock, flags); + if(ld->refcount == 0) + printk(KERN_EMERG "tty_ldisc_deref: no references.\n"); + else + ld->refcount--; + if(ld->refcount == 0) + wake_up(&tty_ldisc_wait); + spin_unlock_irqrestore(&tty_ldisc_lock, flags); +} + +EXPORT_SYMBOL_GPL(tty_ldisc_deref); + +/** + * tty_ldisc_enable - allow ldisc use + * @tty: terminal to activate ldisc on + * + * Set the TTY_LDISC flag when the line discipline can be called + * again. Do neccessary wakeups for existing sleepers. + * + * Note: nobody should set this bit except via this function. Clearing + * directly is allowed. + */ + +static void tty_ldisc_enable(struct tty_struct *tty) +{ + set_bit(TTY_LDISC, &tty->flags); + wake_up(&tty_ldisc_wait); +} + +/** + * tty_set_ldisc - set line discipline + * @tty: the terminal to set + * @ldisc: the line discipline + * + * Set the discipline of a tty line. Must be called from a process + * context. + */ + static int tty_set_ldisc(struct tty_struct *tty, int ldisc) { int retval = 0; struct tty_ldisc o_ldisc; char buf[64]; + unsigned long flags; + struct tty_ldisc *ld; if ((ldisc < N_TTY) || (ldisc >= NR_LDISCS)) return -EINVAL; + +restart: + + if (tty->ldisc.num == ldisc) + return 0; /* We are already in the desired discipline */ + + ld = tty_ldisc_get(ldisc); /* Eduardo Blanco */ /* Cyrus Durgin */ - if (!(ldiscs[ldisc].flags & LDISC_FLAG_DEFINED)) { + if (ld == NULL) + { char modname [20]; - sprintf(modname, "tty-ldisc-%d", ldisc); - request_module (modname); + sprintf(modname, "tty-ldisc-%d", ldisc); + request_module (modname); + ld = tty_ldisc_get(ldisc); } - if (!(ldiscs[ldisc].flags & LDISC_FLAG_DEFINED)) + + if (ld == NULL) return -EINVAL; - if (tty->ldisc.num == ldisc) - return 0; /* We are already in the desired discipline */ + o_ldisc = tty->ldisc; - tty_wait_until_sent(tty, 0); + + /* + * Make sure we don't change while someone holds a + * reference to the line discipline. The TTY_LDISC bit + * prevents anyone taking a reference once it is clear. + * We need the lock to avoid racing reference takers. + */ + + spin_lock_irqsave(&tty_ldisc_lock, flags); + if(tty->ldisc.refcount) + { + /* Free the new ldisc we grabbed. Must drop the lock + first. */ + spin_unlock_irqrestore(&tty_ldisc_lock, flags); + tty_ldisc_put(ldisc); + /* + * There are several reasons we may be busy, including + * random momentary I/O traffic. We must therefore + * retry. We could distinguish between blocking ops + * and retries if we made tty_ldisc_wait() smarter. That + * is up for discussion. + */ + if(wait_event_interruptible(tty_ldisc_wait, tty->ldisc.refcount == 0) < 0) + return -ERESTARTSYS; + goto restart; + } + clear_bit(TTY_LDISC, &tty->flags); + clear_bit(TTY_DONT_FLIP, &tty->flags); + spin_unlock_irqrestore(&tty_ldisc_lock, flags); + + /* + * From this point on we know nobody has an ldisc + * usage reference, nor can they obtain one until + * we say so later on. + */ + + /* + * Wait for ->hangup_work and ->flip.work handlers to terminate + */ + run_task_queue(&tq_timer); + flush_scheduled_tasks(); /* Shutdown the current discipline. */ if (tty->ldisc.close) (tty->ldisc.close)(tty); /* Now set up the new line discipline. */ - tty->ldisc = ldiscs[ldisc]; - tty->termios->c_line = ldisc; + tty_ldisc_assign(tty, ld); + tty_set_termios_ldisc(tty, ldisc); if (tty->ldisc.open) retval = (tty->ldisc.open)(tty); if (retval < 0) { - tty->ldisc = o_ldisc; - tty->termios->c_line = tty->ldisc.num; + tty_ldisc_put(ldisc); + /* There is an outstanding reference here so this is safe */ + tty_ldisc_assign(tty, tty_ldisc_get(o_ldisc.num)); + tty_set_termios_ldisc(tty, tty->ldisc.num); if (tty->ldisc.open && (tty->ldisc.open(tty) < 0)) { - tty->ldisc = ldiscs[N_TTY]; - tty->termios->c_line = N_TTY; + tty_ldisc_put(o_ldisc.num); + /* This driver is always present */ + tty_ldisc_assign(tty, tty_ldisc_get(N_TTY)); + tty_set_termios_ldisc(tty, N_TTY); if (tty->ldisc.open) { int r = tty->ldisc.open(tty); @@ -331,8 +581,21 @@ static int tty_set_ldisc(struct tty_struct *tty, int ldisc) } } } + /* At this point we hold a reference to the new ldisc and a + reference to the old ldisc. If we ended up flipping back + to the existing ldisc we have two references to it */ + if (tty->ldisc.num != o_ldisc.num && tty->driver.set_ldisc) tty->driver.set_ldisc(tty); + + tty_ldisc_put(o_ldisc.num); + + /* + * Allow ldisc referencing to occur as soon as the driver + * ldisc callback completes. + */ + tty_ldisc_enable(tty); + return retval; } @@ -434,11 +697,55 @@ static struct file_operations hung_up_tty_fops = { static spinlock_t redirect_lock = SPIN_LOCK_UNLOCKED; static struct file *redirect; + +/** + * tty_wakeup - request more data + * @tty: terminal + * + * Internal and external helper for wakeups of tty. This function + * informs the line discipline if present that the driver is ready\ + * to receive more output data. + */ + +void tty_wakeup(struct tty_struct *tty) +{ + struct tty_ldisc *ld; + + if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags)) { + ld = tty_ldisc_ref(tty); + if(ld) { + if(ld->write_wakeup) + ld->write_wakeup(tty); + tty_ldisc_deref(ld); + } + } + wake_up_interruptible(&tty->write_wait); +} + /* - * This can be called by the "eventd" kernel thread. That is process synchronous, - * but doesn't hold any locks, so we need to make sure we have the appropriate - * locks for what we're doing.. + * tty_wakeup/tty_ldisc_flush are actually _GPL exports but we can't do + * that in 2.4 for modutils compat reasons. */ +EXPORT_SYMBOL(tty_wakeup); + + +void tty_ldisc_flush(struct tty_struct *tty) +{ + struct tty_ldisc *ld = tty_ldisc_ref(tty); + if(ld) { + if(ld->flush_buffer) + ld->flush_buffer(tty); + tty_ldisc_deref(ld); + } +} + + +/* + * tty_wakeup/tty_ldisc_flush are actually _GPL exports but we can't do + * that in 2.4 for modutils compat reasons. + */ +EXPORT_SYMBOL(tty_ldisc_flush); + void do_tty_hangup(void *data) { struct tty_struct *tty = (struct tty_struct *) data; @@ -446,6 +753,7 @@ void do_tty_hangup(void *data) struct file *f = NULL; struct task_struct *p; struct list_head *l; + struct tty_ldisc *ld; int closecount = 0, n; if (!tty) @@ -479,20 +787,22 @@ void do_tty_hangup(void *data) file_list_unlock(); /* FIXME! What are the locking issues here? This may me overdoing things.. */ + ld = tty_ldisc_ref(tty); + if(ld != NULL) { - unsigned long flags; - - save_flags(flags); cli(); - if (tty->ldisc.flush_buffer) - tty->ldisc.flush_buffer(tty); + if (ld->flush_buffer) + ld->flush_buffer(tty); if (tty->driver.flush_buffer) tty->driver.flush_buffer(tty); - if ((test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags)) && - tty->ldisc.write_wakeup) - (tty->ldisc.write_wakeup)(tty); - restore_flags(flags); + if ((test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags)) && ld->write_wakeup) + ld->write_wakeup(tty); + if (ld->hangup) + ld->hangup(tty); } + /* FIXME: Once we trust the LDISC code better we can wait here for + ldisc completion and fix the driver call race */ + wake_up_interruptible(&tty->write_wait); wake_up_interruptible(&tty->read_wait); @@ -500,21 +810,19 @@ void do_tty_hangup(void *data) * Shutdown the current line discipline, and reset it to * N_TTY. */ + if (tty->driver.flags & TTY_DRIVER_RESET_TERMIOS) - *tty->termios = tty->driver.init_termios; - if (tty->ldisc.num != ldiscs[N_TTY].num) { - if (tty->ldisc.close) - (tty->ldisc.close)(tty); - tty->ldisc = ldiscs[N_TTY]; - tty->termios->c_line = N_TTY; - if (tty->ldisc.open) { - int i = (tty->ldisc.open)(tty); - if (i < 0) - printk(KERN_ERR "do_tty_hangup: N_TTY open: " - "error %d\n", -i); - } + { + down(&tty->termios_sem); + *tty->termios = tty->driver.init_termios; + up(&tty->termios_sem); } - + + /* Defer ldisc switch */ + /* tty_deferred_ldisc_switch(N_TTY) + This should get done automatically when the port closes and + tty_release is called */ + read_lock(&tasklist_lock); for_each_task(p) { if ((tty->session > 0) && (p->session == tty->session) && @@ -545,6 +853,17 @@ void do_tty_hangup(void *data) tty->driver.close(tty, cons_filp); } else if (tty->driver.hangup) (tty->driver.hangup)(tty); + + /* We don't want to have driver/ldisc interactions beyond + the ones we did here. The driver layer expects no + calls after ->hangup() from the ldisc side. However we + can't yet guarantee all that */ + + set_bit(TTY_HUPPED, &tty->flags); + if(ld) { + tty_ldisc_enable(tty); + tty_ldisc_deref(ld); + } unlock_kernel(); if (f) fput(f); @@ -648,10 +967,8 @@ void start_tty(struct tty_struct *tty) } if (tty->driver.start) (tty->driver.start)(tty); - if ((test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags)) && - tty->ldisc.write_wakeup) - (tty->ldisc.write_wakeup)(tty); - wake_up_interruptible(&tty->write_wait); + /* If we have a running line discipline it may need kicking */ + tty_wakeup(tty); } static ssize_t tty_read(struct file * file, char * buf, size_t count, @@ -660,6 +977,7 @@ static ssize_t tty_read(struct file * file, char * buf, size_t count, int i; struct tty_struct * tty; struct inode *inode; + struct tty_ldisc *ld; /* Can't seek (pread) on ttys. */ if (ppos != &file->f_pos) @@ -688,11 +1006,15 @@ static ssize_t tty_read(struct file * file, char * buf, size_t count, return -ERESTARTSYS; } #endif + /* We want to wait for the line discipline to sort out in this + situation */ + ld = tty_ldisc_ref_wait(tty); lock_kernel(); - if (tty->ldisc.read) - i = (tty->ldisc.read)(tty,file,buf,count); + if (ld->read) + i = (ld->read)(tty,file,buf,count); else i = -EIO; + tty_ldisc_deref(ld); unlock_kernel(); if (i > 0) inode->i_atime = CURRENT_TIME; @@ -761,6 +1083,8 @@ static ssize_t tty_write(struct file * file, const char * buf, size_t count, int is_console; struct tty_struct * tty; struct inode *inode = file->f_dentry->d_inode; + ssize_t ret; + struct tty_ldisc *ld; /* Can't seek (pwrite) on ttys. */ if (ppos != &file->f_pos) @@ -807,13 +1131,19 @@ static ssize_t tty_write(struct file * file, const char * buf, size_t count, } } #endif - if (!tty->ldisc.write) - return -EIO; - return do_tty_write(tty->ldisc.write, tty, file, - (const unsigned char *)buf, count); + + ld = tty_ldisc_ref_wait(tty); + if (!ld->write) + ret = -EIO; + else + ret = do_tty_write(ld->write, tty, file, + (const unsigned char __user *)buf, count); + tty_ldisc_deref(ld); + return ret; } -/* Semaphore to protect creating and releasing a tty */ +/* Semaphore to protect creating and releasing a tty. This is shared with + vt.c for deeply disgusting hack reasons */ static DECLARE_MUTEX(tty_sem); static void down_tty_sem(int index) @@ -975,7 +1305,10 @@ static int init_dev(kdev_t device, struct tty_struct **ret_tty) (tty->ldisc.close)(tty); goto release_mem_out; } + set_bit(TTY_LDISC, &o_tty->flags); + tty_ldisc_enable(o_tty); } + tty_ldisc_enable(tty); goto success; /* @@ -1003,7 +1336,9 @@ fast_track: } tty->count++; tty->driver = *driver; /* N.B. why do this every time?? */ - + /* FIXME */ + if(!test_bit(TTY_LDISC, &tty->flags)) + printk(KERN_ERR "init_dev but no ldisc\n"); success: *ret_tty = tty; @@ -1084,6 +1419,7 @@ static void release_dev(struct file * filp) int pty_master, tty_closing, o_tty_closing, do_sleep; int idx; char buf[64]; + unsigned long flags; tty = (struct tty_struct *)filp->private_data; if (tty_paranoia_check(tty, filp->f_dentry->d_inode->i_rdev, "release_dev")) @@ -1275,25 +1611,60 @@ static void release_dev(struct file * filp) printk(KERN_DEBUG "freeing tty structure..."); #endif + /* + * Prevent flush_to_ldisc() from rescheduling the work for later. Then + * kill any delayed work. As this is the final close it does not + * race with the set_ldisc code path. + */ + clear_bit(TTY_LDISC, &tty->flags); + clear_bit(TTY_DONT_FLIP, &tty->flags); + + /* + * Wait for ->hangup_work and ->flip.work handlers to terminate + */ + + run_task_queue(&tq_timer); + flush_scheduled_tasks(); + + /* + * Wait for any short term users (we know they are just driver + * side waiters as the file is closing so user count on the file + * side is zero. + */ + + spin_lock_irqsave(&tty_ldisc_lock, flags); + while(tty->ldisc.refcount) + { + spin_unlock_irqrestore(&tty_ldisc_lock, flags); + wait_event(tty_ldisc_wait, tty->ldisc.refcount == 0); + spin_lock_irqsave(&tty_ldisc_lock, flags); + } + spin_unlock_irqrestore(&tty_ldisc_lock, flags); + /* * Shutdown the current line discipline, and reset it to N_TTY. * N.B. why reset ldisc when we're releasing the memory?? + * FIXME: this MUST get fixed for the new reflocking */ if (tty->ldisc.close) (tty->ldisc.close)(tty); - tty->ldisc = ldiscs[N_TTY]; - tty->termios->c_line = N_TTY; + tty_ldisc_put(tty->ldisc.num); + + /* + * Switch the line discipline back + */ + tty_ldisc_assign(tty, tty_ldisc_get(N_TTY)); + tty_set_termios_ldisc(tty,N_TTY); + if (o_tty) { + /* FIXME: could o_tty be in setldisc here ? */ + clear_bit(TTY_LDISC, &o_tty->flags); if (o_tty->ldisc.close) (o_tty->ldisc.close)(o_tty); - o_tty->ldisc = ldiscs[N_TTY]; + tty_ldisc_put(o_tty->ldisc.num); + tty_ldisc_assign(o_tty, tty_ldisc_get(N_TTY)); + tty_set_termios_ldisc(o_tty,N_TTY); } - - /* - * Make sure that the tty's task queue isn't activated. - */ - run_task_queue(&tq_timer); - flush_scheduled_tasks(); /* * The release_mem function takes care of the details of clearing @@ -1468,14 +1839,18 @@ static int tty_release(struct inode * inode, struct file * filp) static unsigned int tty_poll(struct file * filp, poll_table * wait) { struct tty_struct * tty; + struct tty_ldisc *ld; + int ret = 0; tty = (struct tty_struct *)filp->private_data; if (tty_paranoia_check(tty, filp->f_dentry->d_inode->i_rdev, "tty_poll")) return 0; - if (tty->ldisc.poll) - return (tty->ldisc.poll)(tty, filp, wait); - return 0; + ld = tty_ldisc_ref_wait(tty); + if (ld->poll) + ret = (ld->poll)(tty, filp, wait); + tty_ldisc_deref(ld); + return ret; } static int tty_fasync(int fd, struct file * filp, int on) @@ -1509,12 +1884,15 @@ static int tty_fasync(int fd, struct file * filp, int on) static int tiocsti(struct tty_struct *tty, char * arg) { char ch, mbz = 0; + struct tty_ldisc *ld; if ((current->tty != tty) && !suser()) return -EPERM; if (get_user(ch, arg)) return -EFAULT; - tty->ldisc.receive_buf(tty, &ch, &mbz, 1); + ld = tty_ldisc_ref_wait(tty); + ld->receive_buf(tty, &ch, &mbz, 1); + tty_ldisc_deref(ld); return 0; } @@ -1722,6 +2100,7 @@ int tty_ioctl(struct inode * inode, struct file * file, { struct tty_struct *tty, *real_tty; int retval; + struct tty_ldisc *ld; tty = (struct tty_struct *)file->private_data; if (tty_paranoia_check(tty, inode->i_rdev, "tty_ioctl")) @@ -1812,6 +2191,7 @@ int tty_ioctl(struct inode * inode, struct file * file, case TIOCGSID: return tiocgsid(tty, real_tty, (pid_t *) arg); case TIOCGETD: + /* FIXME: check this is ok */ return put_user(tty->ldisc.num, (int *) arg); case TIOCSETD: return tiocsetd(tty, (int *) arg); @@ -1845,16 +2225,19 @@ int tty_ioctl(struct inode * inode, struct file * file, return send_break(tty, arg ? arg*(HZ/10) : HZ/4); } if (tty->driver.ioctl) { - int retval = (tty->driver.ioctl)(tty, file, cmd, arg); + retval = (tty->driver.ioctl)(tty, file, cmd, arg); if (retval != -ENOIOCTLCMD) return retval; } - if (tty->ldisc.ioctl) { - int retval = (tty->ldisc.ioctl)(tty, file, cmd, arg); - if (retval != -ENOIOCTLCMD) - return retval; + ld = tty_ldisc_ref_wait(tty); + retval = -EINVAL; + if (ld->ioctl) { + retval = ld->ioctl(tty, file, cmd, arg); + if (retval == -ENOIOCTLCMD) + retval = -EINVAL; } - return -EINVAL; + tty_ldisc_deref(ld); + return retval; } @@ -1887,14 +2270,20 @@ static void __do_SAK(void *arg) int session; int i; struct file *filp; + struct tty_ldisc *disc; if (!tty) return; session = tty->session; - if (tty->ldisc.flush_buffer) - tty->ldisc.flush_buffer(tty); + /* We don't want an ldisc switch during this */ + disc = tty_ldisc_ref(tty); + if (disc && disc->flush_buffer) + disc->flush_buffer(tty); + tty_ldisc_deref(disc); + if (tty->driver.flush_buffer) tty->driver.flush_buffer(tty); + read_lock(&tasklist_lock); for_each_task(p) { if ((p->tty == tty) || @@ -1946,11 +2335,16 @@ static void flush_to_ldisc(void *private_) unsigned char *cp; char *fp; int count; - unsigned long flags; + unsigned long flags; + struct tty_ldisc *disc; + + disc = tty_ldisc_ref(tty); + if (disc == NULL) /* !TTY_LDISC */ + return; if (test_bit(TTY_DONT_FLIP, &tty->flags)) { queue_task(&tty->flip.tqueue, &tq_timer); - return; + goto out; } if (tty->flip.buf_num) { cp = tty->flip.char_buf + TTY_FLIPBUF_SIZE; @@ -1973,7 +2367,31 @@ static void flush_to_ldisc(void *private_) tty->flip.count = 0; restore_flags(flags); - tty->ldisc.receive_buf(tty, cp, fp, count); + disc->receive_buf(tty, cp, fp, count); +out: + tty_ldisc_deref(disc); +} + +/* + * Call the ldisc flush directly from a driver. This function may + * return an error and need retrying by the user. + */ + +int tty_push_data(struct tty_struct *tty, unsigned char *cp, unsigned char *fp, int count) +{ + int ret = 0; + struct tty_ldisc *disc; + + disc = tty_ldisc_ref(tty); + if(test_bit(TTY_DONT_FLIP, &tty->flags)) + ret = -EAGAIN; + else if(disc == NULL) + ret = -EIO; + else + disc->receive_buf(tty, cp, fp, count); + tty_ldisc_deref(disc); + return ret; + } /* @@ -2036,13 +2454,14 @@ static void initialize_tty_struct(struct tty_struct *tty) { memset(tty, 0, sizeof(struct tty_struct)); tty->magic = TTY_MAGIC; - tty->ldisc = ldiscs[N_TTY]; + tty_ldisc_assign(tty, tty_ldisc_get(N_TTY)); tty->pgrp = -1; tty->flip.char_buf_ptr = tty->flip.char_buf; tty->flip.flag_buf_ptr = tty->flip.flag_buf; tty->flip.tqueue.routine = flush_to_ldisc; tty->flip.tqueue.data = tty; init_MUTEX(&tty->flip.pty_sem); + init_MUTEX(&tty->termios_sem); init_waitqueue_head(&tty->write_wait); init_waitqueue_head(&tty->read_wait); tty->tq_hangup.routine = do_tty_hangup; @@ -2221,7 +2640,7 @@ int tty_unregister_driver(struct tty_driver *driver) void __init console_init(void) { /* Setup the default TTY line discipline. */ - memset(ldiscs, 0, sizeof(ldiscs)); + memset(tty_ldiscs, 0, NR_LDISCS*sizeof(struct tty_ldisc)); (void) tty_register_ldisc(N_TTY, &tty_ldisc_N_TTY); /* diff --git a/linux-2.4.28-xen-sparse/drivers/scsi/aic7xxx/Makefile b/linux-2.4.29-xen-sparse/drivers/scsi/aic7xxx/Makefile similarity index 100% rename from linux-2.4.28-xen-sparse/drivers/scsi/aic7xxx/Makefile rename to linux-2.4.29-xen-sparse/drivers/scsi/aic7xxx/Makefile diff --git a/linux-2.4.28-xen-sparse/fs/exec.c b/linux-2.4.29-xen-sparse/fs/exec.c similarity index 97% rename from linux-2.4.28-xen-sparse/fs/exec.c rename to linux-2.4.29-xen-sparse/fs/exec.c index 16dc3193bf..8a114151a9 100644 --- a/linux-2.4.28-xen-sparse/fs/exec.c +++ b/linux-2.4.29-xen-sparse/fs/exec.c @@ -328,7 +328,7 @@ int setup_arg_pages(struct linux_binprm *bprm) { unsigned long stack_base; struct vm_area_struct *mpnt; - int i; + int i, ret; stack_base = STACK_TOP - MAX_ARG_PAGES*PAGE_SIZE; @@ -352,7 +352,11 @@ int setup_arg_pages(struct linux_binprm *bprm) mpnt->vm_pgoff = 0; mpnt->vm_file = NULL; mpnt->vm_private_data = (void *) 0; - insert_vm_struct(current->mm, mpnt); + if ((ret = insert_vm_struct(current->mm, mpnt))) { + up_write(¤t->mm->mmap_sem); + kmem_cache_free(vm_area_cachep, mpnt); + return ret; + } current->mm->total_vm = (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT; } @@ -564,12 +568,29 @@ static inline void de_thread(struct task_struct *tsk) tsk->tgid = tsk->pid; } +void get_task_comm(char *buf, struct task_struct *tsk) +{ + /* buf must be at least sizeof(tsk->comm) in size */ + task_lock(tsk); + memcpy(buf, tsk->comm, sizeof(tsk->comm)); + task_unlock(tsk); +} + +void set_task_comm(struct task_struct *tsk, char *buf) +{ + task_lock(tsk); + strncpy(tsk->comm, buf, sizeof(tsk->comm)); + tsk->comm[sizeof(tsk->comm)-1]='\0'; + task_unlock(tsk); +} + int flush_old_exec(struct linux_binprm * bprm) { char * name; int i, ch, retval; struct signal_struct * oldsig; struct files_struct * files; + char tcomm[sizeof(current->comm)]; /* * Make sure we have a private signal table @@ -611,10 +632,11 @@ int flush_old_exec(struct linux_binprm * bprm) if (ch == '/') i = 0; else - if (i < 15) - current->comm[i++] = ch; + if (i < (sizeof(tcomm) - 1)) + tcomm[i++] = ch; } - current->comm[i] = '\0'; + tcomm[i] = '\0'; + set_task_comm(current, tcomm); flush_thread(); diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/bugs.h b/linux-2.4.29-xen-sparse/include/asm-xen/bugs.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/bugs.h rename to linux-2.4.29-xen-sparse/include/asm-xen/bugs.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/desc.h b/linux-2.4.29-xen-sparse/include/asm-xen/desc.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/desc.h rename to linux-2.4.29-xen-sparse/include/asm-xen/desc.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/fixmap.h b/linux-2.4.29-xen-sparse/include/asm-xen/fixmap.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/fixmap.h rename to linux-2.4.29-xen-sparse/include/asm-xen/fixmap.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/highmem.h b/linux-2.4.29-xen-sparse/include/asm-xen/highmem.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/highmem.h rename to linux-2.4.29-xen-sparse/include/asm-xen/highmem.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/hw_irq.h b/linux-2.4.29-xen-sparse/include/asm-xen/hw_irq.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/hw_irq.h rename to linux-2.4.29-xen-sparse/include/asm-xen/hw_irq.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/io.h b/linux-2.4.29-xen-sparse/include/asm-xen/io.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/io.h rename to linux-2.4.29-xen-sparse/include/asm-xen/io.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/irq.h b/linux-2.4.29-xen-sparse/include/asm-xen/irq.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/irq.h rename to linux-2.4.29-xen-sparse/include/asm-xen/irq.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/keyboard.h b/linux-2.4.29-xen-sparse/include/asm-xen/keyboard.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/keyboard.h rename to linux-2.4.29-xen-sparse/include/asm-xen/keyboard.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/mmu_context.h b/linux-2.4.29-xen-sparse/include/asm-xen/mmu_context.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/mmu_context.h rename to linux-2.4.29-xen-sparse/include/asm-xen/mmu_context.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/module.h b/linux-2.4.29-xen-sparse/include/asm-xen/module.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/module.h rename to linux-2.4.29-xen-sparse/include/asm-xen/module.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/msr.h b/linux-2.4.29-xen-sparse/include/asm-xen/msr.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/msr.h rename to linux-2.4.29-xen-sparse/include/asm-xen/msr.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/page.h b/linux-2.4.29-xen-sparse/include/asm-xen/page.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/page.h rename to linux-2.4.29-xen-sparse/include/asm-xen/page.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/pci.h b/linux-2.4.29-xen-sparse/include/asm-xen/pci.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/pci.h rename to linux-2.4.29-xen-sparse/include/asm-xen/pci.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/pgalloc.h b/linux-2.4.29-xen-sparse/include/asm-xen/pgalloc.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/pgalloc.h rename to linux-2.4.29-xen-sparse/include/asm-xen/pgalloc.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/pgtable-2level.h b/linux-2.4.29-xen-sparse/include/asm-xen/pgtable-2level.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/pgtable-2level.h rename to linux-2.4.29-xen-sparse/include/asm-xen/pgtable-2level.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/pgtable.h b/linux-2.4.29-xen-sparse/include/asm-xen/pgtable.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/pgtable.h rename to linux-2.4.29-xen-sparse/include/asm-xen/pgtable.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/processor.h b/linux-2.4.29-xen-sparse/include/asm-xen/processor.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/processor.h rename to linux-2.4.29-xen-sparse/include/asm-xen/processor.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/queues.h b/linux-2.4.29-xen-sparse/include/asm-xen/queues.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/queues.h rename to linux-2.4.29-xen-sparse/include/asm-xen/queues.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/segment.h b/linux-2.4.29-xen-sparse/include/asm-xen/segment.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/segment.h rename to linux-2.4.29-xen-sparse/include/asm-xen/segment.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/smp.h b/linux-2.4.29-xen-sparse/include/asm-xen/smp.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/smp.h rename to linux-2.4.29-xen-sparse/include/asm-xen/smp.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/synch_bitops.h b/linux-2.4.29-xen-sparse/include/asm-xen/synch_bitops.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/synch_bitops.h rename to linux-2.4.29-xen-sparse/include/asm-xen/synch_bitops.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/system.h b/linux-2.4.29-xen-sparse/include/asm-xen/system.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/system.h rename to linux-2.4.29-xen-sparse/include/asm-xen/system.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/vga.h b/linux-2.4.29-xen-sparse/include/asm-xen/vga.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/vga.h rename to linux-2.4.29-xen-sparse/include/asm-xen/vga.h diff --git a/linux-2.4.28-xen-sparse/include/asm-xen/xor.h b/linux-2.4.29-xen-sparse/include/asm-xen/xor.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/asm-xen/xor.h rename to linux-2.4.29-xen-sparse/include/asm-xen/xor.h diff --git a/linux-2.4.28-xen-sparse/include/linux/blk.h b/linux-2.4.29-xen-sparse/include/linux/blk.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/linux/blk.h rename to linux-2.4.29-xen-sparse/include/linux/blk.h diff --git a/linux-2.4.28-xen-sparse/include/linux/irq.h b/linux-2.4.29-xen-sparse/include/linux/irq.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/linux/irq.h rename to linux-2.4.29-xen-sparse/include/linux/irq.h diff --git a/linux-2.4.28-xen-sparse/include/linux/mm.h b/linux-2.4.29-xen-sparse/include/linux/mm.h similarity index 97% rename from linux-2.4.28-xen-sparse/include/linux/mm.h rename to linux-2.4.29-xen-sparse/include/linux/mm.h index 7efbd0adf0..10b81190c2 100644 --- a/linux-2.4.28-xen-sparse/include/linux/mm.h +++ b/linux-2.4.29-xen-sparse/include/linux/mm.h @@ -199,6 +199,11 @@ typedef struct page { #define page_count(p) atomic_read(&(p)->count) #define set_page_count(p,v) atomic_set(&(p)->count, v) +static inline struct page *nth_page(struct page *page, int n) +{ + return page + n; +} + /* * Various page->flags bits: * @@ -562,7 +567,7 @@ extern void __free_pte(pte_t); /* mmap.c */ extern void lock_vma_mappings(struct vm_area_struct *); extern void unlock_vma_mappings(struct vm_area_struct *); -extern void insert_vm_struct(struct mm_struct *, struct vm_area_struct *); +extern int insert_vm_struct(struct mm_struct *, struct vm_area_struct *); extern void __insert_vm_struct(struct mm_struct *, struct vm_area_struct *); extern void build_mmap_rb(struct mm_struct *); extern void exit_mmap(struct mm_struct *); @@ -661,18 +666,33 @@ static inline int expand_stack(struct vm_area_struct * vma, unsigned long addres unsigned long grow; /* - * vma->vm_start/vm_end cannot change under us because the caller is required - * to hold the mmap_sem in write mode. We need to get the spinlock only - * before relocating the vma range ourself. + * vma->vm_start/vm_end cannot change under us because the caller + * is required to hold the mmap_sem in read mode. We need the + * page_table_lock lock to serialize against concurrent expand_stacks. */ address &= PAGE_MASK; spin_lock(&vma->vm_mm->page_table_lock); + + /* already expanded while we were spinning? */ + if (vma->vm_start <= address) { + spin_unlock(&vma->vm_mm->page_table_lock); + return 0; + } + grow = (vma->vm_start - address) >> PAGE_SHIFT; if (vma->vm_end - address > current->rlim[RLIMIT_STACK].rlim_cur || ((vma->vm_mm->total_vm + grow) << PAGE_SHIFT) > current->rlim[RLIMIT_AS].rlim_cur) { spin_unlock(&vma->vm_mm->page_table_lock); return -ENOMEM; } + + if ((vma->vm_flags & VM_LOCKED) && + ((vma->vm_mm->locked_vm + grow) << PAGE_SHIFT) > current->rlim[RLIMIT_MEMLOCK].rlim_cur) { + spin_unlock(&vma->vm_mm->page_table_lock); + return -ENOMEM; + } + + vma->vm_start = address; vma->vm_pgoff -= grow; vma->vm_mm->total_vm += grow; diff --git a/linux-2.4.28-xen-sparse/include/linux/sched.h b/linux-2.4.29-xen-sparse/include/linux/sched.h similarity index 99% rename from linux-2.4.28-xen-sparse/include/linux/sched.h rename to linux-2.4.29-xen-sparse/include/linux/sched.h index da2f49dfcf..9e318d7ed6 100644 --- a/linux-2.4.28-xen-sparse/include/linux/sched.h +++ b/linux-2.4.29-xen-sparse/include/linux/sched.h @@ -806,6 +806,9 @@ extern void daemonize(void); extern int do_execve(char *, char **, char **, struct pt_regs *); extern int do_fork(unsigned long, unsigned long, struct pt_regs *, unsigned long); +extern void set_task_comm(struct task_struct *tsk, char *from); +extern void get_task_comm(char *to, struct task_struct *tsk); + extern void FASTCALL(add_wait_queue(wait_queue_head_t *q, wait_queue_t * wait)); extern void FASTCALL(add_wait_queue_exclusive(wait_queue_head_t *q, wait_queue_t * wait)); extern void FASTCALL(remove_wait_queue(wait_queue_head_t *q, wait_queue_t * wait)); diff --git a/linux-2.4.28-xen-sparse/include/linux/skbuff.h b/linux-2.4.29-xen-sparse/include/linux/skbuff.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/linux/skbuff.h rename to linux-2.4.29-xen-sparse/include/linux/skbuff.h diff --git a/linux-2.4.28-xen-sparse/include/linux/timer.h b/linux-2.4.29-xen-sparse/include/linux/timer.h similarity index 100% rename from linux-2.4.28-xen-sparse/include/linux/timer.h rename to linux-2.4.29-xen-sparse/include/linux/timer.h diff --git a/linux-2.4.28-xen-sparse/kernel/time.c b/linux-2.4.29-xen-sparse/kernel/time.c similarity index 100% rename from linux-2.4.28-xen-sparse/kernel/time.c rename to linux-2.4.29-xen-sparse/kernel/time.c diff --git a/linux-2.4.28-xen-sparse/kernel/timer.c b/linux-2.4.29-xen-sparse/kernel/timer.c similarity index 100% rename from linux-2.4.28-xen-sparse/kernel/timer.c rename to linux-2.4.29-xen-sparse/kernel/timer.c diff --git a/linux-2.4.28-xen-sparse/mkbuildtree b/linux-2.4.29-xen-sparse/mkbuildtree similarity index 100% rename from linux-2.4.28-xen-sparse/mkbuildtree rename to linux-2.4.29-xen-sparse/mkbuildtree diff --git a/linux-2.4.28-xen-sparse/mm/highmem.c b/linux-2.4.29-xen-sparse/mm/highmem.c similarity index 100% rename from linux-2.4.28-xen-sparse/mm/highmem.c rename to linux-2.4.29-xen-sparse/mm/highmem.c diff --git a/linux-2.4.28-xen-sparse/mm/memory.c b/linux-2.4.29-xen-sparse/mm/memory.c similarity index 99% rename from linux-2.4.28-xen-sparse/mm/memory.c rename to linux-2.4.29-xen-sparse/mm/memory.c index 0dc91c305b..1ae2a42988 100644 --- a/linux-2.4.28-xen-sparse/mm/memory.c +++ b/linux-2.4.29-xen-sparse/mm/memory.c @@ -997,7 +997,8 @@ static int do_wp_page(struct mm_struct *mm, struct vm_area_struct * vma, if (PageReserved(old_page)) ++mm->rss; break_cow(vma, new_page, address, page_table); - lru_cache_add(new_page); + if (vm_anon_lru) + lru_cache_add(new_page); /* Free the old page.. */ new_page = old_page; @@ -1238,7 +1239,8 @@ static int do_anonymous_page(struct mm_struct * mm, struct vm_area_struct * vma, mm->rss++; flush_page_to_ram(page); entry = pte_mkwrite(pte_mkdirty(mk_pte(page, vma->vm_page_prot))); - lru_cache_add(page); + if (vm_anon_lru) + lru_cache_add(page); mark_page_accessed(page); } @@ -1303,7 +1305,8 @@ static int do_no_page(struct mm_struct * mm, struct vm_area_struct * vma, } copy_user_highpage(page, new_page, address); page_cache_release(new_page); - lru_cache_add(page); + if (vm_anon_lru) + lru_cache_add(page); new_page = page; } diff --git a/linux-2.4.28-xen-sparse/mm/mprotect.c b/linux-2.4.29-xen-sparse/mm/mprotect.c similarity index 100% rename from linux-2.4.28-xen-sparse/mm/mprotect.c rename to linux-2.4.29-xen-sparse/mm/mprotect.c diff --git a/linux-2.4.28-xen-sparse/mm/mremap.c b/linux-2.4.29-xen-sparse/mm/mremap.c similarity index 97% rename from linux-2.4.28-xen-sparse/mm/mremap.c rename to linux-2.4.29-xen-sparse/mm/mremap.c index 965afa3805..330e194bae 100644 --- a/linux-2.4.28-xen-sparse/mm/mremap.c +++ b/linux-2.4.29-xen-sparse/mm/mremap.c @@ -198,6 +198,7 @@ static inline unsigned long move_vma(struct vm_area_struct * vma, insert_vm_struct(current->mm, new_vma); } + /* XXX: possible errors masked, mapping might remain */ do_munmap(current->mm, addr, old_len); current->mm->total_vm += new_len >> PAGE_SHIFT; @@ -238,6 +239,12 @@ unsigned long do_mremap(unsigned long addr, old_len = PAGE_ALIGN(old_len); new_len = PAGE_ALIGN(new_len); + if (old_len > TASK_SIZE || addr > TASK_SIZE - old_len) + goto out; + + if (addr >= TASK_SIZE) + goto out; + /* new_addr is only valid if MREMAP_FIXED is specified */ if (flags & MREMAP_FIXED) { if (new_addr & ~PAGE_MASK) @@ -247,6 +254,10 @@ unsigned long do_mremap(unsigned long addr, if (new_len > TASK_SIZE || new_addr > TASK_SIZE - new_len) goto out; + + if (new_addr >= TASK_SIZE) + goto out; + /* * Allow new_len == 0 only if new_addr == addr * to preserve truncation in place (that was working diff --git a/linux-2.4.28-xen-sparse/mm/page_alloc.c b/linux-2.4.29-xen-sparse/mm/page_alloc.c similarity index 100% rename from linux-2.4.28-xen-sparse/mm/page_alloc.c rename to linux-2.4.29-xen-sparse/mm/page_alloc.c diff --git a/linux-2.4.28-xen-sparse/mm/swapfile.c b/linux-2.4.29-xen-sparse/mm/swapfile.c similarity index 100% rename from linux-2.4.28-xen-sparse/mm/swapfile.c rename to linux-2.4.29-xen-sparse/mm/swapfile.c diff --git a/linux-2.4.28-xen-sparse/mm/vmalloc.c b/linux-2.4.29-xen-sparse/mm/vmalloc.c similarity index 100% rename from linux-2.4.28-xen-sparse/mm/vmalloc.c rename to linux-2.4.29-xen-sparse/mm/vmalloc.c diff --git a/linux-2.4.28-xen-sparse/net/core/skbuff.c b/linux-2.4.29-xen-sparse/net/core/skbuff.c similarity index 100% rename from linux-2.4.28-xen-sparse/net/core/skbuff.c rename to linux-2.4.29-xen-sparse/net/core/skbuff.c -- 2.39.5