From 470d92684a3f93b58638f43b987de375f07457c7 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Fri, 23 Nov 2007 15:35:47 -0500 Subject: [PATCH] Import 2.4.0-test2pre10 --- Documentation/filesystems/devfs/ChangeLog | 8 ++++++ arch/alpha/kernel/core_mcpcia.c | 23 +++++++--------- arch/alpha/kernel/core_titan.c | 7 +++-- arch/alpha/kernel/irq.c | 2 +- arch/alpha/kernel/machvec_impl.h | 2 +- arch/alpha/kernel/pci.c | 4 +-- arch/alpha/kernel/pci_iommu.c | 20 +++++++++++--- arch/alpha/kernel/sys_dp264.c | 5 ---- arch/i386/kernel/microcode.c | 4 +-- arch/i386/kernel/mtrr.c | 4 +-- arch/m68k/atari/joystick.c | 2 +- arch/sparc64/solaris/socksys.c | 4 +-- drivers/block/acsi_slm.c | 2 +- drivers/block/floppy.c | 4 +-- drivers/block/loop.c | 2 +- drivers/block/md.c | 2 +- drivers/block/nbd.c | 6 ++--- drivers/block/paride/pg.c | 2 +- drivers/block/paride/pt.c | 4 +-- drivers/block/rd.c | 2 +- drivers/cdrom/aztcd.c | 4 +-- drivers/cdrom/cdrom.c | 4 +-- drivers/cdrom/gscd.c | 4 +-- drivers/cdrom/optcd.c | 4 +-- drivers/cdrom/sbpcd.c | 4 +-- drivers/cdrom/sjcd.c | 4 +-- drivers/cdrom/sonycd535.c | 4 +-- drivers/char/dsp56k.c | 4 +-- drivers/char/dtlk.c | 4 +-- drivers/char/ftape/zftape/zftape-init.c | 24 ++++++++--------- drivers/char/ip2main.c | 12 ++++----- drivers/char/istallion.c | 2 +- drivers/char/lp.c | 4 +-- drivers/char/mem.c | 4 +-- drivers/char/misc.c | 4 +-- drivers/char/ppdev.c | 2 +- drivers/char/stallion.c | 2 +- drivers/char/tpqic02.c | 32 +++++++++++----------- drivers/char/tty_io.c | 13 +++------ drivers/char/vc_screen.c | 16 +++++------ drivers/char/videodev.c | 4 +-- drivers/ide/ide-cd.c | 4 +-- drivers/ide/ide-tape.c | 8 +++--- drivers/isdn/avmb1/capi.c | 6 ++--- drivers/isdn/isdn_common.c | 20 +++++++------- drivers/macintosh/adb.c | 4 +-- drivers/net/ppp_generic.c | 4 +-- drivers/net/wan/cosa.c | 2 +- drivers/s390/block/dasd.c | 5 ++-- drivers/sbus/audio/audio.c | 4 +-- drivers/sbus/char/bpp.c | 2 +- drivers/sbus/char/sunkbd.c | 4 +-- drivers/sbus/char/vfc_dev.c | 4 +-- drivers/scsi/sg.c | 4 +-- drivers/scsi/sr.c | 4 +-- drivers/scsi/st.c | 8 +++--- drivers/sgi/char/shmiq.c | 6 ++--- drivers/sound/sound_core.c | 4 +-- drivers/sound/soundcard.c | 4 +-- drivers/usb/input.c | 4 +-- drivers/video/fbmem.c | 4 +-- fs/coda/psdev.c | 2 +- fs/devfs/base.c | 33 +++++++++++++---------- fs/devfs/util.c | 11 ++++---- fs/partitions/check.c | 4 +-- include/asm-alpha/cache.h | 15 ++++++++--- include/linux/devfs_fs_kernel.h | 15 ++++------- net/netlink/netlink_dev.c | 6 ++--- 68 files changed, 237 insertions(+), 218 deletions(-) diff --git a/Documentation/filesystems/devfs/ChangeLog b/Documentation/filesystems/devfs/ChangeLog index 8285489a918a..a96f6f09e079 100644 --- a/Documentation/filesystems/devfs/ChangeLog +++ b/Documentation/filesystems/devfs/ChangeLog @@ -1568,3 +1568,11 @@ Work sponsored by SGI - Ported to kernel 2.4.0-test2-pre3 +=============================================================================== +Changes for patch v172 + +Work sponsored by SGI + +- Changed interface to + +- Changed interface to diff --git a/arch/alpha/kernel/core_mcpcia.c b/arch/alpha/kernel/core_mcpcia.c index 648090d2407e..f114ab24fee9 100644 --- a/arch/alpha/kernel/core_mcpcia.c +++ b/arch/alpha/kernel/core_mcpcia.c @@ -45,8 +45,6 @@ #define MCPCIA_MAX_HOSES 4 -static int mcpcia_hose_count; /* Actual number found. */ - /* * Given a bus, device, and function number, compute resulting * configuration space address and setup the MCPCIA_HAXR2 register @@ -412,10 +410,9 @@ mcpcia_startup_hose(struct pci_controler *hose) * Window 2 is direct access 2GB at 2GB * ??? We ought to scale window 1 with memory. */ + hose->sg_isa = iommu_arena_new(hose, 0x00800000, 0x00800000, 0); + hose->sg_pci = iommu_arena_new(hose, 0x40000000, 0x08000000, 0); - /* Make sure to align the arenas. */ - hose->sg_isa = iommu_arena_new(hose, 0x00800000, 0x00800000, 1); - hose->sg_pci = iommu_arena_new(hose, 0x40000000, 0x08000000, 1); __direct_map_base = 0x80000000; __direct_map_size = 0x80000000; @@ -468,20 +465,20 @@ void __init mcpcia_init_hoses(void) { struct pci_controler *hose; + int hose_count; int h; - mcpcia_hose_count = 0; - /* First, find how many hoses we have. */ + hose_count = 0; for (h = 0; h < MCPCIA_MAX_HOSES; ++h) { if (mcpcia_probe_hose(h)) { if (h != 0) mcpcia_new_hose(h); - mcpcia_hose_count++; + hose_count++; } } - printk("mcpcia_init_hoses: found %d hoses\n", mcpcia_hose_count); + printk("mcpcia_init_hoses: found %d hoses\n", hose_count); /* Now do init for each hose. */ for (hose = hose_head; hose; hose = hose->next) @@ -564,7 +561,7 @@ static void mcpcia_print_system_area(unsigned long la_ptr) { struct el_common *frame; - int i; + struct pci_controler *hose; struct IOD_subpacket { unsigned long base; @@ -593,12 +590,12 @@ mcpcia_print_system_area(unsigned long la_ptr) } *iodpp; frame = (struct el_common *)la_ptr; - iodpp = (struct IOD_subpacket *) (la_ptr + frame->sys_offset); - for (i = 0; i < mcpcia_hose_count; i++, iodpp++) { + for (hose = hose_head; hose; hose = hose->next, iodpp++) { + printk("IOD %d Register Subpacket - Bridge Base Address %16lx\n", - i, iodpp->base); + hose->index, iodpp->base); printk(" WHOAMI = %8x\n", iodpp->whoami); printk(" PCI_REV = %8x\n", iodpp->pci_rev); printk(" CAP_CTRL = %8x\n", iodpp->cap_ctrl); diff --git a/arch/alpha/kernel/core_titan.c b/arch/alpha/kernel/core_titan.c index 37dd8b3c382c..fac75cab543d 100644 --- a/arch/alpha/kernel/core_titan.c +++ b/arch/alpha/kernel/core_titan.c @@ -23,7 +23,6 @@ #include "proto.h" #include "pci_impl.h" -int TITAN_bootcpu; unsigned TITAN_agp = 0; static struct @@ -343,7 +342,11 @@ titan_init_one_pachip_port(titan_pachip_port *port, int index) * address range. */ hose->sg_isa = iommu_arena_new(hose, 0x00800000, 0x00800000, 0); + hose->sg_isa->align_entry = 8; /* 64KB for ISA */ + hose->sg_pci = iommu_arena_new(hose, 0xc0000000, 0x08000000, 0); + hose->sg_pci->align_entry = 4; /* Titan caches 4 PTEs at a time */ + __direct_map_base = 0x40000000; __direct_map_size = 0x80000000; @@ -401,7 +404,7 @@ titan_init_arch(void) printk("%s: CSR_DREV 0x%lx\n", FN, TITAN_dchip->drev.csr); #endif - TITAN_bootcpu = __hard_smp_processor_id(); + boot_cpuid = __hard_smp_processor_id(); /* With multiple PCI busses, we play with I/O as physical addrs. */ ioport_resource.end = ~0UL; diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c index dc665fbfbdff..ac7ca67f89f2 100644 --- a/arch/alpha/kernel/irq.c +++ b/arch/alpha/kernel/irq.c @@ -233,7 +233,7 @@ static unsigned long irq_affinity[NR_IRQS] = { [0 ... NR_IRQS-1] = ~0UL }; static void select_smp_affinity(int irq) { - static int last_cpu = 0; + static int last_cpu; int cpu = last_cpu + 1; if (! irq_desc[irq].handler->set_affinity || irq_user_affinity[irq]) diff --git a/arch/alpha/kernel/machvec_impl.h b/arch/alpha/kernel/machvec_impl.h index 454950c1bd11..f29e775db4e2 100644 --- a/arch/alpha/kernel/machvec_impl.h +++ b/arch/alpha/kernel/machvec_impl.h @@ -121,7 +121,7 @@ * all but one of which we want to go away. In a non-GENERIC kernel, * we want only one, ever. * - * Accomplish this in the GENERIC kernel by puting all of the vectors + * Accomplish this in the GENERIC kernel by putting all of the vectors * in the .init.data section where they'll go away. We'll copy the * one we want to the real alpha_mv vector in setup_arch. * diff --git a/arch/alpha/kernel/pci.c b/arch/alpha/kernel/pci.c index 39de164655ca..7a916ad08b9b 100644 --- a/arch/alpha/kernel/pci.c +++ b/arch/alpha/kernel/pci.c @@ -426,8 +426,8 @@ pcibios_size_bridge(struct pci_bus *bus, struct pbus_set_ranges_data *outer) inner.mem_end -= inner.mem_start; /* Align the sizes up by bridge rules */ - inner.io_end = ROUND_UP(inner.io_end, 4*1024); - inner.mem_end = ROUND_UP(inner.mem_end, 1*1024*1024); + inner.io_end = ROUND_UP(inner.io_end, 4*1024) - 1; + inner.mem_end = ROUND_UP(inner.mem_end, 1*1024*1024) - 1; /* Adjust the bridge's allocation requirements */ bridge->resource[0].end = bridge->resource[0].start + inner.io_end; diff --git a/arch/alpha/kernel/pci_iommu.c b/arch/alpha/kernel/pci_iommu.c index cadf69b58cb9..ccf0cefbbe94 100644 --- a/arch/alpha/kernel/pci_iommu.c +++ b/arch/alpha/kernel/pci_iommu.c @@ -97,6 +97,10 @@ iommu_arena_alloc(struct pci_iommu_arena *arena, long n) } if (i < n) { + /* Reached the end. Flush the TLB and restart the + search from the beginning. */ + alpha_mv.mv_pci_tbi(arena->hose, 0, -1); + p = 0, i = 0; while (i < n && p+i < nent) { if (ptes[p+i]) @@ -197,7 +201,6 @@ pci_map_single(struct pci_dev *pdev, void *cpu_addr, long size, int direction) DBGA("pci_map_single: [%p,%lx] np %ld -> sg %x from %p\n", cpu_addr, size, npages, ret, __builtin_return_address(0)); - alpha_mv.mv_pci_tbi(hose, ret, ret + size - 1); return ret; } @@ -247,6 +250,13 @@ pci_unmap_single(struct pci_dev *pdev, dma_addr_t dma_addr, long size, npages = calc_npages((dma_addr & ~PAGE_MASK) + size); iommu_arena_free(arena, dma_ofs, npages); + + /* + If we're freeing ptes above the `next_entry' pointer (they + may have snuck back into the TLB since the last wrap flush), + we need to flush the TLB before reallocating the latter. + */ + if (dma_ofs >= arena->next_entry) alpha_mv.mv_pci_tbi(hose, dma_addr, dma_addr + size - 1); DBGA("pci_unmap_single: sg [%x,%lx] np %ld from %p\n", @@ -434,8 +444,6 @@ sg_fill(struct scatterlist *leader, struct scatterlist *end, #endif } while (++sg < end && (int) sg->dma_address < 0); - alpha_mv.mv_pci_tbi(arena->hose, out->dma_address, - out->dma_address+out->dma_length-1); return 1; } @@ -569,6 +577,12 @@ pci_unmap_sg(struct pci_dev *pdev, struct scatterlist *sg, int nents, if (fend < tend) fend = tend; } + /* + If we're freeing ptes above the `next_entry' pointer (they + may have snuck back into the TLB since the last wrap flush), + we need to flush the TLB before reallocating the latter. + */ + if ((fend - arena->dma_base) >> PAGE_SHIFT >= arena->next_entry) alpha_mv.mv_pci_tbi(hose, fbeg, fend); DBGA("pci_unmap_sg: %d entries\n", nents - (end - sg)); diff --git a/arch/alpha/kernel/sys_dp264.c b/arch/alpha/kernel/sys_dp264.c index 475b477bd3d1..88f4afd68532 100644 --- a/arch/alpha/kernel/sys_dp264.c +++ b/arch/alpha/kernel/sys_dp264.c @@ -275,11 +275,6 @@ clipper_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) irq = (vector - 0x800) >> 4; -#if 0 - printk("clipper_srm_device_interrupt: vector 0x%lx IRQ %d cpu %d\n", - vector, irq, smp_processor_id()); -#endif - /* * The SRM console reports PCI interrupts with a vector calculated by: * diff --git a/arch/i386/kernel/microcode.c b/arch/i386/kernel/microcode.c index 989f70c7ea65..7d7a5874111b 100644 --- a/arch/i386/kernel/microcode.c +++ b/arch/i386/kernel/microcode.c @@ -103,9 +103,9 @@ static int __init microcode_init(void) MICROCODE_MINOR); error = 1; } - devfs_handle = devfs_register(NULL, "cpu/microcode", 0, + devfs_handle = devfs_register(NULL, "cpu/microcode", DEVFS_FL_DEFAULT, 0, 0, S_IFREG | S_IRUSR | S_IWUSR, - 0, 0, µcode_fops, NULL); + µcode_fops, NULL); if (devfs_handle == NULL && error) { printk(KERN_ERR "microcode: failed to devfs_register()\n"); return -EINVAL; diff --git a/arch/i386/kernel/mtrr.c b/arch/i386/kernel/mtrr.c index 758b3ec38844..c0a158694398 100644 --- a/arch/i386/kernel/mtrr.c +++ b/arch/i386/kernel/mtrr.c @@ -1885,8 +1885,8 @@ int __init mtrr_init(void) proc_root_mtrr->proc_fops = &mtrr_fops; #endif #ifdef CONFIG_DEVFS_FS - devfs_handle = devfs_register (NULL, "cpu/mtrr", 0, DEVFS_FL_DEFAULT, 0, 0, - S_IFREG | S_IRUGO | S_IWUSR, 0, 0, + devfs_handle = devfs_register (NULL, "cpu/mtrr", DEVFS_FL_DEFAULT, 0, 0, + S_IFREG | S_IRUGO | S_IWUSR, &mtrr_fops, NULL); #endif init_table (); diff --git a/arch/m68k/atari/joystick.c b/arch/m68k/atari/joystick.c index 86bd24c73a13..2d20eb653602 100644 --- a/arch/m68k/atari/joystick.c +++ b/arch/m68k/atari/joystick.c @@ -136,7 +136,7 @@ int __init atari_joystick_init(void) if (devfs_register_chrdev(MAJOR_NR, "Joystick", &atari_joystick_fops)) printk("unable to get major %d for joystick devices\n", MAJOR_NR); devfs_register_series (NULL, "joysticks/digital%u", 2, DEVFS_FL_DEFAULT, - MAJOR_NR, 128, S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + MAJOR_NR, 128, S_IFCHR | S_IRUSR | S_IWUSR, &atari_joystick_fops, NULL); return 0; diff --git a/arch/sparc64/solaris/socksys.c b/arch/sparc64/solaris/socksys.c index 220e549ac658..85075d87e817 100644 --- a/arch/sparc64/solaris/socksys.c +++ b/arch/sparc64/solaris/socksys.c @@ -181,9 +181,9 @@ init_socksys(void) printk ("Couldn't create socket\n"); return ret; } - devfs_handle = devfs_register (NULL, "socksys", 0, DEVFS_FL_NONE, + devfs_handle = devfs_register (NULL, "socksys", DEVFS_FL_DEFAULT, 30, 0, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &socksys_fops, NULL); file = fcheck(ret); /* N.B. Is this valid? Suppose the f_ops are in a module ... */ diff --git a/drivers/block/acsi_slm.c b/drivers/block/acsi_slm.c index 51bb6b1a3aa9..62758a297f8d 100644 --- a/drivers/block/acsi_slm.c +++ b/drivers/block/acsi_slm.c @@ -1009,7 +1009,7 @@ int slm_init( void ) devfs_handle = devfs_mk_dir (NULL, "slm", 3, NULL); devfs_register_series (devfs_handle, "%u", MAX_SLM, DEVFS_FL_DEFAULT, - MAJOR_NR, 0, S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + MAJOR_NR, 0, S_IFCHR | S_IRUSR | S_IWUSR, &slm_fops, NULL); return 0; } diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index 8f47348189d3..1fcd8b73f884 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -3878,10 +3878,10 @@ static void __init register_devfs_entries (int drive) char name[16]; sprintf (name, "%d%s", drive, table[table_sup[UDP->cmos][i]]); - devfs_register (devfs_handle, name, 0, DEVFS_FL_DEFAULT, MAJOR_NR, + devfs_register (devfs_handle, name, DEVFS_FL_DEFAULT, MAJOR_NR, base_minor + (table_sup[UDP->cmos][i] << 2), S_IFBLK | S_IRUSR | S_IWUSR | S_IRGRP |S_IWGRP, - 0, 0, &floppy_fops, NULL); + &floppy_fops, NULL); } while (table_sup[UDP->cmos][i++]); } } diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 96dacdc225f7..89018e54a915 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -785,7 +785,7 @@ int __init loop_init(void) devfs_handle = devfs_mk_dir (NULL, "loop", 0, NULL); devfs_register_series (devfs_handle, "%u", max_loop, DEVFS_FL_DEFAULT, MAJOR_NR, 0, - S_IFBLK | S_IRUSR | S_IWUSR | S_IRGRP, 0, 0, + S_IFBLK | S_IRUSR | S_IWUSR | S_IRGRP, &lo_fops, NULL); if ((max_loop < 1) || (max_loop > 255)) { diff --git a/drivers/block/md.c b/drivers/block/md.c index 918dbdaf2636..617990e771ba 100644 --- a/drivers/block/md.c +++ b/drivers/block/md.c @@ -3629,7 +3629,7 @@ int md__init md_init (void) } devfs_handle = devfs_mk_dir (NULL, "md", 0, NULL); devfs_register_series (devfs_handle, "%u",MAX_MD_DEVS,DEVFS_FL_DEFAULT, - MAJOR_NR, 0, S_IFBLK | S_IRUSR | S_IWUSR, 0, 0, + MAJOR_NR, 0, S_IFBLK | S_IRUSR | S_IWUSR, &md_fops, NULL); blk_dev[MD_MAJOR].queue = md_get_queue; diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index 8256c57bd0b0..222622c35983 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c @@ -519,9 +519,9 @@ int nbd_init(void) } devfs_handle = devfs_mk_dir (NULL, "nbd", 0, NULL); devfs_register_series (devfs_handle, "%u", MAX_NBD, - DEVFS_FL_DEFAULT, MAJOR_NR, 0, - S_IFBLK | S_IRUSR | S_IWUSR, 0, 0, - &nbd_fops, NULL); + DEVFS_FL_DEFAULT, MAJOR_NR, 0, + S_IFBLK | S_IRUSR | S_IWUSR, + &nbd_fops, NULL); return 0; } diff --git a/drivers/block/paride/pg.c b/drivers/block/paride/pg.c index 3cb11286da1d..5c4dbbee8434 100644 --- a/drivers/block/paride/pg.c +++ b/drivers/block/paride/pg.c @@ -309,7 +309,7 @@ int pg_init (void) /* preliminary initialisation */ } devfs_handle = devfs_mk_dir (NULL, "pg", 2, NULL); devfs_register_series (devfs_handle, "%u", 4, DEVFS_FL_DEFAULT, - major, 0, S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + major, 0, S_IFCHR | S_IRUSR | S_IWUSR, &pg_fops, NULL); return 0; } diff --git a/drivers/block/paride/pt.c b/drivers/block/paride/pt.c index 739755a93787..52c67d01796a 100644 --- a/drivers/block/paride/pt.c +++ b/drivers/block/paride/pt.c @@ -314,10 +314,10 @@ int pt_init (void) /* preliminary initialisation */ devfs_handle = devfs_mk_dir (NULL, "pt", 2, NULL); devfs_register_series (devfs_handle, "%u", 4, DEVFS_FL_DEFAULT, - major, 0, S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + major, 0, S_IFCHR | S_IRUSR | S_IWUSR, &pt_fops, NULL); devfs_register_series (devfs_handle, "%un", 4, DEVFS_FL_DEFAULT, - major, 128, S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + major, 128, S_IFCHR | S_IRUSR | S_IWUSR, &pt_fops, NULL); return 0; } diff --git a/drivers/block/rd.c b/drivers/block/rd.c index 564f822eaa8e..26c0509d2295 100644 --- a/drivers/block/rd.c +++ b/drivers/block/rd.c @@ -411,7 +411,7 @@ int __init rd_init (void) devfs_handle = devfs_mk_dir (NULL, "rd", 0, NULL); devfs_register_series (devfs_handle, "%u", NUM_RAMDISKS, DEVFS_FL_DEFAULT, MAJOR_NR, 0, - S_IFBLK | S_IRUSR | S_IWUSR, 0, 0, + S_IFBLK | S_IRUSR | S_IWUSR, &fd_fops, NULL); for (i = 0; i < NUM_RAMDISKS; i++) diff --git a/drivers/cdrom/aztcd.c b/drivers/cdrom/aztcd.c index aaad8e0c6bc2..e32238d32359 100644 --- a/drivers/cdrom/aztcd.c +++ b/drivers/cdrom/aztcd.c @@ -1791,8 +1791,8 @@ int __init aztcd_init(void) return -EIO; } } - devfs_register (NULL, "aztcd", 0, DEVFS_FL_DEFAULT, MAJOR_NR, 0, - S_IFBLK | S_IRUGO | S_IWUGO, 0, 0, &azt_fops, NULL); + devfs_register (NULL, "aztcd", DEVFS_FL_DEFAULT, MAJOR_NR, 0, + S_IFBLK | S_IRUGO | S_IWUGO, &azt_fops, NULL); if (devfs_register_blkdev(MAJOR_NR, "aztcd", &azt_fops) != 0) { printk("aztcd: Unable to get major %d for Aztech CD-ROM\n", diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c index 6b117a6be8e4..caa3900b3a6f 100644 --- a/drivers/cdrom/cdrom.c +++ b/drivers/cdrom/cdrom.c @@ -408,9 +408,9 @@ int register_cdrom(struct cdrom_device_info *cdi) } else { cdi->de = - devfs_register (devfs_handle, vname, 0, DEVFS_FL_DEFAULT, + devfs_register (devfs_handle, vname, DEVFS_FL_DEFAULT, MAJOR (cdi->dev), MINOR (cdi->dev), - S_IFBLK | S_IRUGO | S_IWUGO, 0, 0, + S_IFBLK | S_IRUGO | S_IWUGO, &cdrom_fops, NULL); } cdinfo(CD_REG_UNREG, "drive \"/dev/%s\" registered\n", cdi->name); diff --git a/drivers/cdrom/gscd.c b/drivers/cdrom/gscd.c index f563a16c0313..b0fa47b3ed38 100644 --- a/drivers/cdrom/gscd.c +++ b/drivers/cdrom/gscd.c @@ -1075,8 +1075,8 @@ int result; MAJOR_NR); return -EIO; } - devfs_register (NULL, "gscd", 0, DEVFS_FL_DEFAULT, MAJOR_NR, 0, - S_IFBLK | S_IRUGO | S_IWUGO, 0, 0, &gscd_fops, NULL); + devfs_register (NULL, "gscd", DEVFS_FL_DEFAULT, MAJOR_NR, 0, + S_IFBLK | S_IRUGO | S_IWUGO, &gscd_fops, NULL); blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST); blksize_size[MAJOR_NR] = gscd_blocksizes; diff --git a/drivers/cdrom/optcd.c b/drivers/cdrom/optcd.c index 07f1f030cb7a..480a01833ab7 100644 --- a/drivers/cdrom/optcd.c +++ b/drivers/cdrom/optcd.c @@ -2064,8 +2064,8 @@ int __init optcd_init(void) printk(KERN_ERR "optcd: unable to get major %d\n", MAJOR_NR); return -EIO; } - devfs_register (NULL, "optcd", 0, DEVFS_FL_DEFAULT, MAJOR_NR, 0, - S_IFBLK | S_IRUGO | S_IWUGO, 0, 0, &opt_fops, NULL); + devfs_register (NULL, "optcd", DEVFS_FL_DEFAULT, MAJOR_NR, 0, + S_IFBLK | S_IRUGO | S_IWUGO, &opt_fops, NULL); hardsect_size[MAJOR_NR] = &hsecsize; blksize_size[MAJOR_NR] = &blksize; blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST); diff --git a/drivers/cdrom/sbpcd.c b/drivers/cdrom/sbpcd.c index 01dd94bf5ac6..08400a52ceca 100644 --- a/drivers/cdrom/sbpcd.c +++ b/drivers/cdrom/sbpcd.c @@ -5803,9 +5803,9 @@ int __init SBPCD_INIT(void) sprintf (nbuff, "c%dt%d/cd", SBPCD_ISSUE - 1, D_S[j].drv_id); sbpcd_infop->de = - devfs_register (devfs_handle, nbuff, 0, DEVFS_FL_DEFAULT, + devfs_register (devfs_handle, nbuff, DEVFS_FL_DEFAULT, MAJOR_NR, j, S_IFBLK | S_IRUGO | S_IWUGO, - 0, 0, &cdrom_fops, NULL); + &cdrom_fops, NULL); if (register_cdrom(sbpcd_infop)) { printk(" sbpcd: Unable to register with Uniform CD-ROm driver\n"); diff --git a/drivers/cdrom/sjcd.c b/drivers/cdrom/sjcd.c index 82dd5e5b9a1b..a867c3819b0c 100644 --- a/drivers/cdrom/sjcd.c +++ b/drivers/cdrom/sjcd.c @@ -1565,8 +1565,8 @@ int __init sjcd_init( void ){ } printk(KERN_INFO "SJCD: Status: port=0x%x.\n", sjcd_base); - devfs_register (NULL, "sjcd", 0, DEVFS_FL_DEFAULT, MAJOR_NR, 0, - S_IFBLK | S_IRUGO | S_IWUGO, 0, 0, &sjcd_fops, NULL); + devfs_register (NULL, "sjcd", DEVFS_FL_DEFAULT, MAJOR_NR, 0, + S_IFBLK | S_IRUGO | S_IWUGO, &sjcd_fops, NULL); sjcd_present++; return( 0 ); diff --git a/drivers/cdrom/sonycd535.c b/drivers/cdrom/sonycd535.c index 1f5fea7b9392..d85fbc01f1a7 100644 --- a/drivers/cdrom/sonycd535.c +++ b/drivers/cdrom/sonycd535.c @@ -1587,11 +1587,11 @@ sony535_init(void) printk("IRQ%d, ", tmp_irq); printk("using %d byte buffer\n", sony_buffer_size); - devfs_register (NULL, CDU535_HANDLE, 0, + devfs_register (NULL, CDU535_HANDLE, DEVFS_FL_DEFAULT, MAJOR_NR, 0, S_IFBLK | S_IRUGO | S_IWUGO, - 0, 0, &cdu_fops, NULL); + &cdu_fops, NULL); if (devfs_register_blkdev(MAJOR_NR, CDU535_HANDLE, &cdu_fops)) { printk("Unable to get major %d for %s\n", MAJOR_NR, CDU535_MESSAGE_NAME); diff --git a/drivers/char/dsp56k.c b/drivers/char/dsp56k.c index dc076dd5a400..6fe41e118c29 100644 --- a/drivers/char/dsp56k.c +++ b/drivers/char/dsp56k.c @@ -519,9 +519,9 @@ int __init dsp56k_init(void) printk("DSP56k driver: Unable to register driver\n"); return -ENODEV; } - devfs_handle = devfs_register (NULL, "dsp56k", 0, DEVFS_FL_NONE, + devfs_handle = devfs_register (NULL, "dsp56k", DEVFS_FL_DEFAULT, DSP56K_MAJOR, 0, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &dsp56k_fops, NULL); dsp56k.in_use = 0; diff --git a/drivers/char/dtlk.c b/drivers/char/dtlk.c index 730b69b1773d..475e1d0529b5 100644 --- a/drivers/char/dtlk.c +++ b/drivers/char/dtlk.c @@ -352,9 +352,9 @@ static int __init dtlk_init(void) } if (dtlk_dev_probe() == 0) printk(", MAJOR %d\n", dtlk_major); - devfs_handle = devfs_register (NULL, "dtlk", 0, DEVFS_FL_NONE, + devfs_handle = devfs_register (NULL, "dtlk", DEVFS_FL_DEFAULT, dtlk_major, DTLK_MINOR, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &dtlk_fops, NULL); init_timer(&dtlk_timer); diff --git a/drivers/char/ftape/zftape/zftape-init.c b/drivers/char/ftape/zftape/zftape-init.c index 883f4a1068cf..e6cb87d1e25c 100644 --- a/drivers/char/ftape/zftape/zftape-init.c +++ b/drivers/char/ftape/zftape/zftape-init.c @@ -439,34 +439,34 @@ KERN_INFO char devname[9]; sprintf (devname, "qft%i", i); - devfs_register (NULL, devname, 0, DEVFS_FL_NONE, + devfs_register (NULL, devname, DEVFS_FL_DEFAULT, QIC117_TAPE_MAJOR, i, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &zft_cdev, NULL); sprintf (devname, "nqft%i", i); - devfs_register (NULL, devname, 0, DEVFS_FL_NONE, + devfs_register (NULL, devname, DEVFS_FL_DEFAULT, QIC117_TAPE_MAJOR, i + 4, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &zft_cdev, NULL); sprintf (devname, "zqft%i", i); - devfs_register (NULL, devname, 0, DEVFS_FL_NONE, + devfs_register (NULL, devname, DEVFS_FL_DEFAULT, QIC117_TAPE_MAJOR, i + 16, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &zft_cdev, NULL); sprintf (devname, "nzqft%i", i); - devfs_register (NULL, devname, 0, DEVFS_FL_NONE, + devfs_register (NULL, devname, DEVFS_FL_DEFAULT, QIC117_TAPE_MAJOR, i + 20, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &zft_cdev, NULL); sprintf (devname, "rawqft%i", i); - devfs_register (NULL, devname, 0, DEVFS_FL_NONE, + devfs_register (NULL, devname, DEVFS_FL_DEFAULT, QIC117_TAPE_MAJOR, i + 32, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &zft_cdev, NULL); sprintf (devname, "nrawqft%i", i); - devfs_register (NULL, devname, 0, DEVFS_FL_NONE, + devfs_register (NULL, devname, DEVFS_FL_DEFAULT, QIC117_TAPE_MAJOR, i + 36, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &zft_cdev, NULL); } diff --git a/drivers/char/ip2main.c b/drivers/char/ip2main.c index 033eb9aafe72..a645832c47af 100644 --- a/drivers/char/ip2main.c +++ b/drivers/char/ip2main.c @@ -877,19 +877,19 @@ old_ip2_init(void) #ifdef CONFIG_DEVFS_FS sprintf( name, "ipl%d", i ); i2BoardPtrTable[i]->devfs_ipl_handle = - devfs_register (devfs_handle, name, 0, - DEVFS_FL_NONE, + devfs_register (devfs_handle, name, + DEVFS_FL_DEFAULT, IP2_IPL_MAJOR, 4 * i, S_IRUSR | S_IWUSR | S_IRGRP | S_IFCHR, - 0, 0, &ip2_ipl, NULL); + &ip2_ipl, NULL); sprintf( name, "stat%d", i ); i2BoardPtrTable[i]->devfs_stat_handle = - devfs_register (devfs_handle, name, 0, - DEVFS_FL_NONE, + devfs_register (devfs_handle, name, + DEVFS_FL_DEFAULT, IP2_IPL_MAJOR, 4 * i + 1, S_IRUSR | S_IWUSR | S_IRGRP | S_IFCHR, - 0, 0, &ip2_ipl, NULL); + &ip2_ipl, NULL); for ( box = 0; box < ABS_MAX_BOXES; ++box ) { diff --git a/drivers/char/istallion.c b/drivers/char/istallion.c index 8d16c9daf1ad..81421c032997 100644 --- a/drivers/char/istallion.c +++ b/drivers/char/istallion.c @@ -5310,7 +5310,7 @@ int __init stli_init(void) devfs_handle = devfs_mk_dir (NULL, "staliomem", 9, NULL); devfs_register_series (devfs_handle, "%u", 4, DEVFS_FL_DEFAULT, STL_SIOMEMMAJOR, 0, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &stli_fsiomem, NULL); /* diff --git a/drivers/char/lp.c b/drivers/char/lp.c index c2df7ea1858c..bbbcad9a7c34 100644 --- a/drivers/char/lp.c +++ b/drivers/char/lp.c @@ -675,9 +675,9 @@ static int lp_register(int nr, struct parport *port) lp_reset(nr); sprintf (name, "%d", nr); - devfs_register (devfs_handle, name, 0, + devfs_register (devfs_handle, name, DEVFS_FL_DEFAULT, LP_MAJOR, nr, - S_IFCHR | S_IRUGO | S_IWUGO, 0, 0, + S_IFCHR | S_IRUGO | S_IWUGO, &lp_fops, NULL); printk(KERN_INFO "lp%d: using %s (%s).\n", nr, port->name, diff --git a/drivers/char/mem.c b/drivers/char/mem.c index 98ec4f5c69a9..8f7e6017a752 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c @@ -605,9 +605,9 @@ void __init memory_devfs_register (void) int i; for (i=0; i<(sizeof(list)/sizeof(*list)); i++) - devfs_register (NULL, list[i].name, 0, DEVFS_FL_NONE, + devfs_register (NULL, list[i].name, DEVFS_FL_NONE, MEM_MAJOR, list[i].minor, - list[i].mode | S_IFCHR, 0, 0, + list[i].mode | S_IFCHR, list[i].fops, NULL); } diff --git a/drivers/char/misc.c b/drivers/char/misc.c index cecf896168d0..057da451c8d9 100644 --- a/drivers/char/misc.c +++ b/drivers/char/misc.c @@ -192,9 +192,9 @@ int misc_register(struct miscdevice * misc) if (!devfs_handle) devfs_handle = devfs_mk_dir (NULL, "misc", 4, NULL); misc->devfs_handle = - devfs_register (devfs_handle, misc->name, 0, DEVFS_FL_NONE, + devfs_register (devfs_handle, misc->name, DEVFS_FL_NONE, MISC_MAJOR, misc->minor, - S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, misc->fops, NULL); /* diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c index 819ed0b1a8bd..af52cf98f47d 100644 --- a/drivers/char/ppdev.c +++ b/drivers/char/ppdev.c @@ -665,7 +665,7 @@ static int __init ppdev_init (void) devfs_handle = devfs_mk_dir (NULL, "parports", 0, NULL); devfs_register_series (devfs_handle, "%u", PARPORT_MAX, DEVFS_FL_DEFAULT, PP_MAJOR, 0, - S_IFCHR | S_IRUGO | S_IWUGO, 0, 0, + S_IFCHR | S_IRUGO | S_IWUGO, &pp_fops, NULL); printk (KERN_INFO PP_VERSION "\n"); diff --git a/drivers/char/stallion.c b/drivers/char/stallion.c index fdaeeaea063e..ba1b9caa9736 100644 --- a/drivers/char/stallion.c +++ b/drivers/char/stallion.c @@ -3194,7 +3194,7 @@ int __init stl_init(void) devfs_handle = devfs_mk_dir (NULL, "staliomem", 9, NULL); devfs_register_series (devfs_handle, "%u", 4, DEVFS_FL_DEFAULT, STL_SIOMEMMAJOR, 0, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &stl_fsiomem, NULL); /* diff --git a/drivers/char/tpqic02.c b/drivers/char/tpqic02.c index 133f19aac060..09b502a723c7 100644 --- a/drivers/char/tpqic02.c +++ b/drivers/char/tpqic02.c @@ -2905,37 +2905,37 @@ int __init qic02_tape_init(void) #endif return -ENODEV; } - devfs_register (NULL, "ntpqic11", 0, DEVFS_FL_NONE, + devfs_register (NULL, "ntpqic11", DEVFS_FL_DEFAULT, QIC02_TAPE_MAJOR, 2, - S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, &qic02_tape_fops, NULL); - devfs_register (NULL, "tpqic11", 0, DEVFS_FL_NONE, + devfs_register (NULL, "tpqic11", DEVFS_FL_DEFAULT, QIC02_TAPE_MAJOR, 3, - S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, &qic02_tape_fops, NULL); - devfs_register (NULL, "ntpqic24", 0, DEVFS_FL_NONE, + devfs_register (NULL, "ntpqic24", DEVFS_FL_DEFAULT, QIC02_TAPE_MAJOR, 4, - S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, &qic02_tape_fops, NULL); - devfs_register (NULL, "tpqic24", 0, DEVFS_FL_NONE, + devfs_register (NULL, "tpqic24", DEVFS_FL_DEFAULT, QIC02_TAPE_MAJOR, 5, - S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, &qic02_tape_fops, NULL); - devfs_register (NULL, "ntpqic120", 0, DEVFS_FL_NONE, + devfs_register (NULL, "ntpqic120", DEVFS_FL_DEFAULT, QIC02_TAPE_MAJOR, 6, - S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, &qic02_tape_fops, NULL); - devfs_register (NULL, "tpqic120", 0, DEVFS_FL_NONE, + devfs_register (NULL, "tpqic120", DEVFS_FL_DEFAULT, QIC02_TAPE_MAJOR, 7, - S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, &qic02_tape_fops, NULL); - devfs_register (NULL, "ntpqic150", 0, DEVFS_FL_NONE, + devfs_register (NULL, "ntpqic150", DEVFS_FL_DEFAULT, QIC02_TAPE_MAJOR, 8, - S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, &qic02_tape_fops, NULL); - devfs_register (NULL, "tpqic150", 0, DEVFS_FL_NONE, + devfs_register (NULL, "tpqic150", DEVFS_FL_DEFAULT, QIC02_TAPE_MAJOR, 9, - S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP, &qic02_tape_fops, NULL); init_waitqueue_head(&qic02_tape_transfer); /* prepare timer */ diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c index d702851d787e..6038b0ebd1f8 100644 --- a/drivers/char/tty_io.c +++ b/drivers/char/tty_io.c @@ -1968,8 +1968,6 @@ void tty_register_devfs (struct tty_driver *driver, unsigned int flags, { #ifdef CONFIG_DEVFS_FS umode_t mode = S_IFCHR | S_IRUSR | S_IWUSR; - uid_t uid = 0; - gid_t gid = 0; struct tty_struct tty; char buf[32]; @@ -1993,14 +1991,11 @@ void tty_register_devfs (struct tty_driver *driver, unsigned int flags, } # ifdef CONFIG_UNIX98_PTYS if ( (driver->major >= UNIX98_PTY_SLAVE_MAJOR) && - (driver->major < UNIX98_PTY_SLAVE_MAJOR + UNIX98_NR_MAJORS) ) { - uid = current->uid; - gid = current->gid; - } + (driver->major < UNIX98_PTY_SLAVE_MAJOR + UNIX98_NR_MAJORS) ) + flags |= DEVFS_FL_CURRENT_OWNER; # endif - devfs_register (NULL, tty_name (&tty, buf), 0,flags | DEVFS_FL_DEFAULT, - driver->major, minor, mode, uid, gid, - &tty_fops, NULL); + devfs_register (NULL, tty_name (&tty, buf), flags | DEVFS_FL_DEFAULT, + driver->major, minor, mode, &tty_fops, NULL); #endif /* CONFIG_DEVFS_FS */ } diff --git a/drivers/char/vc_screen.c b/drivers/char/vc_screen.c index 5138c76b88a3..67ff8d856373 100644 --- a/drivers/char/vc_screen.c +++ b/drivers/char/vc_screen.c @@ -476,12 +476,12 @@ void vcs_make_devfs (unsigned int index, int unregister) } else { - devfs_register (devfs_handle, name + 1, 0, DEVFS_FL_DEFAULT, + devfs_register (devfs_handle, name + 1, DEVFS_FL_DEFAULT, VCS_MAJOR, index + 1, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, &vcs_fops, NULL); - devfs_register (devfs_handle, name, 0, DEVFS_FL_DEFAULT, + S_IFCHR | S_IRUSR | S_IWUSR, &vcs_fops, NULL); + devfs_register (devfs_handle, name, DEVFS_FL_DEFAULT, VCS_MAJOR, index + 129, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, &vcs_fops, NULL); + S_IFCHR | S_IRUSR | S_IWUSR, &vcs_fops, NULL); } #endif /* CONFIG_DEVFS_FS */ } @@ -496,12 +496,12 @@ int __init vcs_init(void) printk("unable to get major %d for vcs device", VCS_MAJOR); devfs_handle = devfs_mk_dir (NULL, "vcc", 3, NULL); - devfs_register (devfs_handle, "0", 1, DEVFS_FL_DEFAULT, + devfs_register (devfs_handle, "0", DEVFS_FL_DEFAULT, VCS_MAJOR, 0, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, &vcs_fops, NULL); - devfs_register (devfs_handle, "a", 1, DEVFS_FL_DEFAULT, + S_IFCHR | S_IRUSR | S_IWUSR, &vcs_fops, NULL); + devfs_register (devfs_handle, "a", DEVFS_FL_DEFAULT, VCS_MAJOR, 128, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, &vcs_fops, NULL); + S_IFCHR | S_IRUSR | S_IWUSR, &vcs_fops, NULL); return error; } diff --git a/drivers/char/videodev.c b/drivers/char/videodev.c index 0e743d5c46b7..4a3bfb859157 100644 --- a/drivers/char/videodev.c +++ b/drivers/char/videodev.c @@ -469,9 +469,9 @@ int video_register_device(struct video_device *vfd, int type) * has serious privacy issues. */ vfd->devfs_handle = - devfs_register (NULL, name, 0, DEVFS_FL_DEFAULT, + devfs_register (NULL, name, DEVFS_FL_DEFAULT, VIDEO_MAJOR, vfd->minor, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &video_fops, NULL); #if defined(CONFIG_PROC_FS) && defined(CONFIG_VIDEO_PROC_FS) diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c index ab4d3afbb9e1..53f6b5a9e7b6 100644 --- a/drivers/ide/ide-cd.c +++ b/drivers/ide/ide-cd.c @@ -2199,9 +2199,9 @@ static int ide_cdrom_register (ide_drive_t *drive, int nslots) if (!CDROM_CONFIG_FLAGS (drive)->close_tray) devinfo->mask |= CDC_CLOSE_TRAY; - devinfo->de = devfs_register(drive->de, "cd", 2, DEVFS_FL_DEFAULT, + devinfo->de = devfs_register(drive->de, "cd", DEVFS_FL_DEFAULT, HWIF(drive)->major, minor, - S_IFBLK | S_IRUGO | S_IWUGO, 0, 0, + S_IFBLK | S_IRUGO | S_IWUGO, ide_fops, NULL); return register_cdrom(devinfo); diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c index 09e1b12fb71e..911234014e6a 100644 --- a/drivers/ide/ide-tape.c +++ b/drivers/ide/ide-tape.c @@ -5987,14 +5987,14 @@ int idetape_init (void) idetape_setup (drive, tape, minor); idetape_chrdevs[minor].drive = drive; tape->de_r = - devfs_register (drive->de, "mt", 2, DEVFS_FL_DEFAULT, + devfs_register (drive->de, "mt", DEVFS_FL_DEFAULT, HWIF(drive)->major, minor, - S_IFCHR | S_IRUGO | S_IWUGO, 0, 0, + S_IFCHR | S_IRUGO | S_IWUGO, &idetape_fops, NULL); tape->de_n = - devfs_register (drive->de, "mtn", 3, DEVFS_FL_DEFAULT, + devfs_register (drive->de, "mtn", DEVFS_FL_DEFAULT, HWIF(drive)->major, minor + 128, - S_IFCHR | S_IRUGO | S_IWUGO, 0, 0, + S_IFCHR | S_IRUGO | S_IWUGO, &idetape_fops, NULL); devfs_register_tape (tape->de_r); supported++; failed--; diff --git a/drivers/isdn/avmb1/capi.c b/drivers/isdn/avmb1/capi.c index 972019295cb9..8169df4820c4 100644 --- a/drivers/isdn/avmb1/capi.c +++ b/drivers/isdn/avmb1/capi.c @@ -2053,11 +2053,11 @@ int capi_init(void) devfs_register_series (NULL, "capi/r%u", CAPINC_NR_PORTS, DEVFS_FL_DEFAULT, capi_rawmajor, 0, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &capinc_raw_fops, NULL); #endif /* CONFIG_ISDN_CAPI_MIDDLEWARE */ - devfs_register (NULL, "isdn/capi20", 0, DEVFS_FL_DEFAULT, - capi_major, 0, S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + devfs_register (NULL, "isdn/capi20", DEVFS_FL_DEFAULT, + capi_major, 0, S_IFCHR | S_IRUSR | S_IWUSR, &capi_fops, NULL); printk(KERN_NOTICE "capi20: started up with major %d\n", capi_major); diff --git a/drivers/isdn/isdn_common.c b/drivers/isdn/isdn_common.c index aca7161841ed..fa5a3d844413 100644 --- a/drivers/isdn/isdn_common.c +++ b/drivers/isdn/isdn_common.c @@ -2581,14 +2581,14 @@ static void isdn_register_devfs(int k) sprintf (buf, "isdn%d", k); dev->devfs_handle_isdnX[k] = - devfs_register (devfs_handle, buf, 0, DEVFS_FL_DEFAULT, - ISDN_MAJOR, ISDN_MINOR_B + k,0600 | S_IFCHR, 0, 0, + devfs_register (devfs_handle, buf, DEVFS_FL_DEFAULT, + ISDN_MAJOR, ISDN_MINOR_B + k,0600 | S_IFCHR, &isdn_fops, NULL); sprintf (buf, "isdnctrl%d", k); dev->devfs_handle_isdnctrlX[k] = - devfs_register (devfs_handle, buf, 0, DEVFS_FL_DEFAULT, + devfs_register (devfs_handle, buf, DEVFS_FL_DEFAULT, ISDN_MAJOR, ISDN_MINOR_CTRL + k, 0600 | S_IFCHR, - 0, 0, &isdn_fops, NULL); + &isdn_fops, NULL); } static void isdn_unregister_devfs(int k) @@ -2610,19 +2610,19 @@ static void isdn_init_devfs(void) sprintf (buf, "ippp%d", i); dev->devfs_handle_ipppX[i] = - devfs_register (devfs_handle, buf, 0, DEVFS_FL_DEFAULT, + devfs_register (devfs_handle, buf, DEVFS_FL_DEFAULT, ISDN_MAJOR, ISDN_MINOR_PPP + i, - 0600 | S_IFCHR, 0, 0, &isdn_fops, NULL); + 0600 | S_IFCHR, &isdn_fops, NULL); } # endif dev->devfs_handle_isdninfo = - devfs_register (devfs_handle, "isdninfo", 0, DEVFS_FL_DEFAULT, + devfs_register (devfs_handle, "isdninfo", DEVFS_FL_DEFAULT, ISDN_MAJOR, ISDN_MINOR_STATUS, 0600 | S_IFCHR, - 0, 0, &isdn_fops, NULL); + &isdn_fops, NULL); dev->devfs_handle_isdnctrl = - devfs_register (devfs_handle, "isdnctrl", 0, DEVFS_FL_DEFAULT, - ISDN_MAJOR, ISDN_MINOR_CTRL, 0600 | S_IFCHR, 0, 0, + devfs_register (devfs_handle, "isdnctrl", DEVFS_FL_DEFAULT, + ISDN_MAJOR, ISDN_MINOR_CTRL, 0600 | S_IFCHR, &isdn_fops, NULL); } diff --git a/drivers/macintosh/adb.c b/drivers/macintosh/adb.c index 2fc74f806136..ff6f18ee1d34 100644 --- a/drivers/macintosh/adb.c +++ b/drivers/macintosh/adb.c @@ -674,8 +674,8 @@ void adbdev_init() if (devfs_register_chrdev(ADB_MAJOR, "adb", &adb_fops)) printk(KERN_ERR "adb: unable to get major %d\n", ADB_MAJOR); else - devfs_register (NULL, "adb", 0, DEVFS_FL_NONE, + devfs_register (NULL, "adb", DEVFS_FL_DEFAULT, ADB_MAJOR, 0, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &adb_fops, NULL); } diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c index b9d5ebfc3bcd..e43e3b394ac5 100644 --- a/drivers/net/ppp_generic.c +++ b/drivers/net/ppp_generic.c @@ -718,9 +718,9 @@ int __init ppp_init(void) err = devfs_register_chrdev(PPP_MAJOR, "ppp", &ppp_device_fops); if (err) printk(KERN_ERR "failed to register PPP device (%d)\n", err); - devfs_handle = devfs_register(NULL, "ppp", 0, DEVFS_FL_NONE, + devfs_handle = devfs_register(NULL, "ppp", DEVFS_FL_DEFAULT, PPP_MAJOR, 0, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &ppp_device_fops, NULL); return 0; diff --git a/drivers/net/wan/cosa.c b/drivers/net/wan/cosa.c index 6885d5fb1a8e..c27d89ca9e32 100644 --- a/drivers/net/wan/cosa.c +++ b/drivers/net/wan/cosa.c @@ -398,7 +398,7 @@ static int __init cosa_init(void) devfs_handle = devfs_mk_dir (NULL, "cosa", 4, NULL); devfs_register_series (devfs_handle, "%u", nr_cards, DEVFS_FL_DEFAULT, cosa_major, 0, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &cosa_fops, NULL); if (!nr_cards) { printk(KERN_WARNING "cosa: no devices found.\n"); diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index 79e8f27dc0c7..55e27c7d8aa9 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c @@ -792,11 +792,10 @@ register_dasd_last (int di) dasd_info[di]->info.devno,'\0' ); dasd_info[di] -> devfs_entry = devfs_register ( NULL /* dir */, - name, strlen(name), - 0 /* flags */, + name, + DEVFS_FL_DEFAULT /* flags */, DASD_MAJOR, minor, 0755 /* mode */, - 0 /* uid */ , 0 /* gid */, &dasd_device_operations, (void *)dasd_info[di]); } diff --git a/drivers/sbus/audio/audio.c b/drivers/sbus/audio/audio.c index 31856af31e81..6e11610b0015 100644 --- a/drivers/sbus/audio/audio.c +++ b/drivers/sbus/audio/audio.c @@ -2010,9 +2010,9 @@ int register_sparcaudio_driver(struct sparcaudio_driver *drv, int duplex) for (i=0; i < sizeof (dev_list) / sizeof (*dev_list); i++) { sparcaudio_mkname (name_buf, dev_list[i].name, dev); minor = (dev << SPARCAUDIO_DEVICE_SHIFT) | dev_list[i].minor; - devfs_register (devfs_handle, name_buf, 0, DEVFS_FL_NONE, + devfs_register (devfs_handle, name_buf, DEVFS_FL_NONE, SOUND_MAJOR, minor, S_IFCHR | dev_list[i].mode, - 0, 0, &sparcaudio_fops, NULL); + &sparcaudio_fops, NULL); } /* Setup the circular queues of output and input buffers diff --git a/drivers/sbus/char/bpp.c b/drivers/sbus/char/bpp.c index ba68100177ec..6dfc4c1322b8 100644 --- a/drivers/sbus/char/bpp.c +++ b/drivers/sbus/char/bpp.c @@ -1031,7 +1031,7 @@ int __init bpp_init(void) } devfs_handle = devfs_mk_dir (NULL, "bpp", 3, NULL); devfs_register_series (devfs_handle, "%u", BPP_NO, DEVFS_FL_DEFAULT, - BPP_MAJOR, 0, S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + BPP_MAJOR, 0, S_IFCHR | S_IRUSR | S_IWUSR, &bpp_fops, NULL); return 0; diff --git a/drivers/sbus/char/sunkbd.c b/drivers/sbus/char/sunkbd.c index 5f7ea69233ec..8004569ab3a0 100644 --- a/drivers/sbus/char/sunkbd.c +++ b/drivers/sbus/char/sunkbd.c @@ -1605,9 +1605,9 @@ void __init keyboard_zsinit(void (*put_char)(unsigned char)) spin_unlock_irq(&sunkbd_lock); /* Register the /dev/kbd interface */ - devfs_register (NULL, "kbd", 0, DEVFS_FL_NONE, + devfs_register (NULL, "kbd", DEVFS_FL_DEFAULT, KBD_MAJOR, 0, - S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH, &kbd_fops, NULL); if (devfs_register_chrdev (KBD_MAJOR, "kbd", &kbd_fops)){ printk ("Could not register /dev/kbd device\n"); diff --git a/drivers/sbus/char/vfc_dev.c b/drivers/sbus/char/vfc_dev.c index dee47f98bf64..589b787d057b 100644 --- a/drivers/sbus/char/vfc_dev.c +++ b/drivers/sbus/char/vfc_dev.c @@ -166,9 +166,9 @@ int init_vfc_device(struct sbus_dev *sdev,struct vfc_dev *dev, int instance) return -EIO; sprintf (devname, "%d", instance); - dev->de = devfs_register (devfs_handle, devname, 0, DEVFS_FL_DEFAULT, + dev->de = devfs_register (devfs_handle, devname, DEVFS_FL_DEFAULT, VFC_MAJOR, instance, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &vfc_fops, NULL); return 0; } diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c index 71b93e379a70..4bfdc59f4f0c 100644 --- a/drivers/scsi/sg.c +++ b/drivers/scsi/sg.c @@ -1230,9 +1230,9 @@ static int sg_attach(Scsi_Device * scsidp) sdp->detached = 0; sdp->sg_tablesize = scsidp->host ? scsidp->host->sg_tablesize : 0; sdp->i_rdev = MKDEV(SCSI_GENERIC_MAJOR, k); - sdp->de = devfs_register (scsidp->de, "generic", 7, DEVFS_FL_NONE, + sdp->de = devfs_register (scsidp->de, "generic", DEVFS_FL_DEFAULT, SCSI_GENERIC_MAJOR, k, - S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, &sg_fops, NULL); sg_template.nr_dev++; sg_dev_arr[k] = sdp; diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c index e568c6d1bd52..3e1aeec016e2 100644 --- a/drivers/scsi/sr.c +++ b/drivers/scsi/sr.c @@ -777,9 +777,9 @@ void sr_finish() sprintf(name, "sr%d", i); strcpy(scsi_CDs[i].cdi.name, name); scsi_CDs[i].cdi.de = - devfs_register (scsi_CDs[i].device->de, "cd", 2, + devfs_register (scsi_CDs[i].device->de, "cd", DEVFS_FL_DEFAULT, MAJOR_NR, i, - S_IFBLK | S_IRUGO | S_IWUGO, 0, 0, + S_IFBLK | S_IRUGO | S_IWUGO, &cdrom_fops, NULL); register_cdrom(&scsi_CDs[i].cdi); } diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c index a9d08c165937..bdc3e8002f47 100644 --- a/drivers/scsi/st.c +++ b/drivers/scsi/st.c @@ -3509,17 +3509,17 @@ static int st_attach(Scsi_Device * SDp) /* Rewind entry */ sprintf (name, "mt%s", formats[mode]); tpnt->de_r[mode] = - devfs_register (SDp->de, name, 0, DEVFS_FL_DEFAULT, + devfs_register (SDp->de, name, DEVFS_FL_DEFAULT, MAJOR_NR, i + (mode << 5), S_IFCHR | S_IRUGO | S_IWUGO, - 0, 0, &st_fops, NULL); + &st_fops, NULL); /* No-rewind entry */ sprintf (name, "mt%sn", formats[mode]); tpnt->de_n[mode] = - devfs_register (SDp->de, name, 0, DEVFS_FL_DEFAULT, + devfs_register (SDp->de, name, DEVFS_FL_DEFAULT, MAJOR_NR, i + (mode << 5) + 128, S_IFCHR | S_IRUGO | S_IWUGO, - 0, 0, &st_fops, NULL); + &st_fops, NULL); } devfs_register_tape (tpnt->de_r[0]); tpnt->device = SDp; diff --git a/drivers/sgi/char/shmiq.c b/drivers/sgi/char/shmiq.c index 2d6a4b6f4fc9..73e0067595d2 100644 --- a/drivers/sgi/char/shmiq.c +++ b/drivers/sgi/char/shmiq.c @@ -446,11 +446,11 @@ shmiq_init (void) { printk ("SHMIQ setup\n"); devfs_register_chrdev(SHMIQ_MAJOR, "shmiq", &shmiq_fops); - devfs_register (NULL, "shmiq", 0, DEVFS_FL_DEFAULT, - SHMIQ_MAJOR, 0, S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + devfs_register (NULL, "shmiq", DEVFS_FL_DEFAULT, + SHMIQ_MAJOR, 0, S_IFCHR | S_IRUSR | S_IWUSR, &shmiq_fops, NULL); devfs_register_series (NULL, "qcntl%u", 2, DEVFS_FL_DEFAULT, SHMIQ_MAJOR, 1, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &shmiq_fops, NULL); } diff --git a/drivers/sound/sound_core.c b/drivers/sound/sound_core.c index da0cfe51c4c2..9ec821b91df3 100644 --- a/drivers/sound/sound_core.c +++ b/drivers/sound/sound_core.c @@ -175,9 +175,9 @@ static int sound_insert_unit(struct sound_unit **list, struct file_operations *f sprintf (name_buf, "%s", name); else sprintf (name_buf, "%s%d", name, (r - low) / SOUND_STEP); - s->de = devfs_register (devfs_handle, name_buf, 0, + s->de = devfs_register (devfs_handle, name_buf, DEVFS_FL_NONE, SOUND_MAJOR, s->unit_minor, - S_IFCHR | mode, 0, 0, fops, NULL); + S_IFCHR | mode, fops, NULL); return r; } diff --git a/drivers/sound/soundcard.c b/drivers/sound/soundcard.c index 5018ad1e7746..aa7b82280792 100644 --- a/drivers/sound/soundcard.c +++ b/drivers/sound/soundcard.c @@ -565,9 +565,9 @@ static void soundcard_register_devfs (int do_register) for (j = 0; j < num || j == 0; j++) { soundcard_make_name (name_buf, dev_list[i].name, j); if (do_register) - devfs_register (NULL, name_buf, 0, DEVFS_FL_NONE, + devfs_register (NULL, name_buf, DEVFS_FL_NONE, SOUND_MAJOR, dev_list[i].minor+ (j* 0x10), - S_IFCHR | dev_list[i].mode, 0, 0, + S_IFCHR | dev_list[i].mode, &oss_sound_fops, NULL); else { devfs_handle_t de; diff --git a/drivers/usb/input.c b/drivers/usb/input.c index 66a3d2911631..4fb2985af63c 100644 --- a/drivers/usb/input.c +++ b/drivers/usb/input.c @@ -386,8 +386,8 @@ devfs_handle_t input_register_minor(char *name, int minor, int minor_base) { char devfs_name[16]; sprintf(devfs_name, name, minor); - return devfs_register(input_devfs_handle, devfs_name, 0, DEVFS_FL_DEFAULT, INPUT_MAJOR, minor + minor_base, - S_IFCHR | S_IRUGO | S_IWUSR, 0, 0, &input_fops, NULL); + return devfs_register(input_devfs_handle, devfs_name, DEVFS_FL_DEFAULT, INPUT_MAJOR, minor + minor_base, + S_IFCHR | S_IRUGO | S_IWUSR, &input_fops, NULL); } void input_unregister_minor(devfs_handle_t handle) diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c index ee1248a23f97..864e30f0ca5a 100644 --- a/drivers/video/fbmem.c +++ b/drivers/video/fbmem.c @@ -654,8 +654,8 @@ register_framebuffer(struct fb_info *fb_info) } sprintf (name_buf, "%d", i); fb_info->devfs_handle = - devfs_register (devfs_handle, name_buf, 0, DEVFS_FL_NONE, - FB_MAJOR, i, S_IFCHR | S_IRUGO | S_IWUGO, 0, 0, + devfs_register (devfs_handle, name_buf, DEVFS_FL_DEFAULT, + FB_MAJOR, i, S_IFCHR | S_IRUGO | S_IWUGO, &fb_fops, NULL); return 0; diff --git a/fs/coda/psdev.c b/fs/coda/psdev.c index 582ea7000d7c..45025e871c4f 100644 --- a/fs/coda/psdev.c +++ b/fs/coda/psdev.c @@ -417,7 +417,7 @@ int init_coda_psdev(void) devfs_handle = devfs_mk_dir (NULL, "coda", 4, NULL); devfs_register_series (devfs_handle, "%u", MAX_CODADEVS, DEVFS_FL_NONE, CODA_PSDEV_MAJOR, 0, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &coda_psdev_fops, NULL); memset(&coda_upc_comm, 0, sizeof(coda_upc_comm)); memset(&coda_super_info, 0, sizeof(coda_super_info)); diff --git a/fs/devfs/base.c b/fs/devfs/base.c index 8b6e58f9c32e..0d3d151774a9 100644 --- a/fs/devfs/base.c +++ b/fs/devfs/base.c @@ -472,6 +472,10 @@ . Work sponsored by SGI. v0.100 + 20000621 Richard Gooch + Changed interface to . + Work sponsored by SGI. + v0.101 */ #include #include @@ -506,7 +510,7 @@ #include #include -#define DEVFS_VERSION "0.100 (20000619)" +#define DEVFS_VERSION "0.101 (20000621)" #define DEVFS_NAME "devfs" @@ -1204,15 +1208,10 @@ static void devfsd_notify (struct devfs_entry *de, unsigned int type, int wait) * @dir: The handle to the parent devfs directory entry. If this is %NULL the * new name is relative to the root of the devfs. * @name: The name of the entry. - * @namelen: The number of characters in @name, not including a %NULL - * terminator. If this is 0, then @name must be %NULL-terminated and the - * length is computed internally. * @flags: A set of bitwise-ORed flags (DEVFS_FL_*). * @major: The major number. Not needed for regular files. * @minor: The minor number. Not needed for regular files. * @mode: The default file mode. - * @uid: The default UID of the file. - * @guid: The default GID of the file. * @ops: The &file_operations or &block_device_operations structure. * This must not be externally deallocated. * @info: An arbitrary pointer which will be written to the @private_data @@ -1224,12 +1223,10 @@ static void devfsd_notify (struct devfs_entry *de, unsigned int type, int wait) * On failure %NULL is returned. */ -devfs_handle_t devfs_register (devfs_handle_t dir, - const char *name, unsigned int namelen, +devfs_handle_t devfs_register (devfs_handle_t dir, const char *name, unsigned int flags, unsigned int major, unsigned int minor, - umode_t mode, uid_t uid, gid_t gid, - void *ops, void *info) + umode_t mode, void *ops, void *info) { int is_new; struct devfs_entry *de; @@ -1264,7 +1261,6 @@ devfs_handle_t devfs_register (devfs_handle_t dir, DEVFS_NAME, name); return NULL; } - if (namelen < 1) namelen = strlen (name); if ( S_ISCHR (mode) && (flags & DEVFS_FL_AUTO_DEVNUM) ) { if (next_devnum_char >= MAX_DEVNUM) @@ -1289,7 +1285,8 @@ devfs_handle_t devfs_register (devfs_handle_t dir, minor = next_devnum_block & 0xff; ++next_devnum_block; } - de = search_for_entry (dir, name, namelen, TRUE, TRUE, &is_new, FALSE); + de = search_for_entry (dir, name, strlen (name), TRUE, TRUE, &is_new, + FALSE); if (de == NULL) { printk ("%s: devfs_register(): could not create entry: \"%s\"\n", @@ -1333,8 +1330,16 @@ devfs_handle_t devfs_register (devfs_handle_t dir, } de->info = info; de->mode = mode; - de->u.fcb.default_uid = uid; - de->u.fcb.default_gid = gid; + if (flags & DEVFS_FL_CURRENT_OWNER) + { + de->u.fcb.default_uid = current->uid; + de->u.fcb.default_gid = current->gid; + } + else + { + de->u.fcb.default_uid = 0; + de->u.fcb.default_gid = 0; + } de->registered = TRUE; de->u.fcb.ops = ops; de->u.fcb.auto_owner = (flags & DEVFS_FL_AUTO_OWNER) ? TRUE : FALSE; diff --git a/fs/devfs/util.c b/fs/devfs/util.c index fe47464487e9..6e3f2f782700 100644 --- a/fs/devfs/util.c +++ b/fs/devfs/util.c @@ -28,6 +28,8 @@ Created <_devfs_convert_name> and supported SCSI and IDE CD-ROMs 20000203 Richard Gooch Changed operations pointer type to void *. + 20000621 Richard Gooch + Changed interface to . */ #include #include @@ -134,8 +136,6 @@ EXPORT_SYMBOL(devfs_register_tape); * @major: The major number. Not needed for regular files. * @minor_start: The starting minor number. Not needed for regular files. * @mode: The default file mode. - * @uid: The default UID of the file. - * @guid: The default GID of the file. * @ops: The &file_operations or &block_device_operations structure. * This must not be externally deallocated. * @info: An arbitrary pointer which will be written to the private_data @@ -147,8 +147,7 @@ EXPORT_SYMBOL(devfs_register_tape); void devfs_register_series (devfs_handle_t dir, const char *format, unsigned int num_entries, unsigned int flags, unsigned int major, unsigned int minor_start, - umode_t mode, uid_t uid, gid_t gid, - void *ops, void *info) + umode_t mode, void *ops, void *info) { unsigned int count; char devname[128]; @@ -156,8 +155,8 @@ void devfs_register_series (devfs_handle_t dir, const char *format, for (count = 0; count < num_entries; ++count) { sprintf (devname, format, count); - devfs_register (dir, devname, 0, flags, major, minor_start + count, - mode, uid, gid, ops, info); + devfs_register (dir, devname, flags, major, minor_start + count, + mode, ops, info); } } /* End Function devfs_register_series */ EXPORT_SYMBOL(devfs_register_series); diff --git a/fs/partitions/check.c b/fs/partitions/check.c index 5981fa1201a9..09b94f6fa3d7 100644 --- a/fs/partitions/check.c +++ b/fs/partitions/check.c @@ -311,9 +311,9 @@ static void devfs_register_partition (struct gendisk *dev, int minor, int part) devfs_flags |= DEVFS_FL_REMOVABLE; sprintf (devname, "part%d", part); dev->part[minor + part].de = - devfs_register (dir, devname, 0, devfs_flags, + devfs_register (dir, devname, devfs_flags, dev->major, minor + part, - S_IFBLK | S_IRUSR | S_IWUSR, 0, 0, + S_IFBLK | S_IRUSR | S_IWUSR, dev->fops, NULL); } diff --git a/include/asm-alpha/cache.h b/include/asm-alpha/cache.h index 5e46073a8870..d9483efb1f55 100644 --- a/include/asm-alpha/cache.h +++ b/include/asm-alpha/cache.h @@ -4,9 +4,18 @@ #ifndef __ARCH_ALPHA_CACHE_H #define __ARCH_ALPHA_CACHE_H -/* Bytes per L1 (data) cache line. Both EV4 and EV5 are write-through, - read-allocate, direct-mapped, physical. */ -#define L1_CACHE_BYTES 32 +#include + +/* Bytes per L1 (data) cache line. */ +#if defined(CONFIG_ALPHA_GENERIC) || defined(CONFIG_ALPHA_EV6) +# define L1_CACHE_BYTES 32 /* should be 64, but networking dies */ +#else +/* Both EV4 and EV5 are write-through, read-allocate, + direct-mapped, physical. +*/ +# define L1_CACHE_BYTES 32 +#endif + #define L1_CACHE_ALIGN(x) (((x)+(L1_CACHE_BYTES-1))&~(L1_CACHE_BYTES-1)) #define SMP_CACHE_BYTES L1_CACHE_BYTES diff --git a/include/linux/devfs_fs_kernel.h b/include/linux/devfs_fs_kernel.h index b35fbe6e19d2..8173779f3423 100644 --- a/include/linux/devfs_fs_kernel.h +++ b/include/linux/devfs_fs_kernel.h @@ -35,6 +35,7 @@ #define DEVFS_FL_REMOVABLE 0x020 /* This is a removable media device */ #define DEVFS_FL_WAIT 0x040 /* Wait for devfsd to finish */ #define DEVFS_FL_NO_PERSISTENCE 0x080 /* Forget changes after unregister */ +#define DEVFS_FL_CURRENT_OWNER 0x100 /* Set initial ownership to current */ #define DEVFS_FL_DEFAULT DEVFS_FL_NONE @@ -52,12 +53,10 @@ typedef struct devfs_entry * devfs_handle_t; #ifdef CONFIG_DEVFS_FS -extern devfs_handle_t devfs_register (devfs_handle_t dir, - const char *name, unsigned int namelen, +extern devfs_handle_t devfs_register (devfs_handle_t dir, const char *name, unsigned int flags, unsigned int major, unsigned int minor, - umode_t mode, uid_t uid, gid_t gid, - void *ops, void *info); + umode_t mode, void *ops, void *info); extern void devfs_unregister (devfs_handle_t de); extern int devfs_mk_symlink (devfs_handle_t dir, const char *name, unsigned int namelen, @@ -98,8 +97,7 @@ extern void devfs_register_series (devfs_handle_t dir, const char *format, unsigned int num_entries, unsigned int flags, unsigned int major, unsigned int minor_start, - umode_t mode, uid_t uid, gid_t gid, - void *ops, void *info); + umode_t mode, void *ops, void *info); extern int init_devfs_fs (void); extern void mount_devfs_fs (void); @@ -107,12 +105,10 @@ extern void devfs_make_root (const char *name); #else /* CONFIG_DEVFS_FS */ static inline devfs_handle_t devfs_register (devfs_handle_t dir, const char *name, - unsigned int namelen, unsigned int flags, unsigned int major, unsigned int minor, umode_t mode, - uid_t uid, gid_t gid, void *ops, void *info) { return NULL; @@ -239,8 +235,7 @@ static inline void devfs_register_series (devfs_handle_t dir, unsigned int flags, unsigned int major, unsigned int minor_start, - umode_t mode, uid_t uid, gid_t gid, - void *ops, void *info) + umode_t mode, void *ops, void *info) { return; } diff --git a/net/netlink/netlink_dev.c b/net/netlink/netlink_dev.c index b0eb9788ee59..4da257555f81 100644 --- a/net/netlink/netlink_dev.c +++ b/net/netlink/netlink_dev.c @@ -178,9 +178,9 @@ static devfs_handle_t devfs_handle = NULL; static void __init make_devfs_entries (const char *name, int minor) { - devfs_register (devfs_handle, name, 0, DEVFS_FL_DEFAULT, + devfs_register (devfs_handle, name, DEVFS_FL_DEFAULT, NETLINK_MAJOR, minor, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &netlink_fops, NULL); } @@ -201,7 +201,7 @@ int __init init_netlink(void) make_devfs_entries ("IP6_FW", 13); devfs_register_series (devfs_handle, "tap%u", 16, DEVFS_FL_DEFAULT, NETLINK_MAJOR, 16, - S_IFCHR | S_IRUSR | S_IWUSR, 0, 0, + S_IFCHR | S_IRUSR | S_IWUSR, &netlink_fops, NULL); return 0; } -- 2.39.5