26 Jul, 2011

10 commits

  • new helper: posix_acl_create(&acl, gfp, mode_p). Replaces acl with
    modified clone, on failure releases acl and replaces with NULL.
    Returns 0 or -ve on error. All callers of posix_acl_create_masq()
    switched.

    Signed-off-by: Al Viro

    Al Viro
     
  • In-core acls are copy-on-write, so the reference taken by set_cached_acl() will
    do just fine.

    Signed-off-by: Al Viro

    Al Viro
     
  • new helper: posix_acl_chmod(&acl, gfp, mode). Replaces acl with modified
    clone or with NULL if that has failed; returns 0 or -ve on error. All
    callers of posix_acl_chmod_masq() switched to that - they'd been doing
    exactly the same thing.

    Signed-off-by: Al Viro

    Al Viro
     
  • Always set up a negative ACL cache entry if the inode can't have ACLs.
    That behaves much better than doing this check inside ->check_acl.

    Also remove the left over MAY_NOT_BLOCK check.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Al Viro

    Christoph Hellwig
     
  • Always set up a negative ACL cache entry if the inode doesn't have an
    attribute fork. That behaves much better than doing this check inside
    ->check_acl.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Al Viro

    Christoph Hellwig
     
  • If we do not want to use ACLs we at least need to perform normal Unix
    permission checks. From the comment I'm not quite sure that's what
    is intended, but if 0p wants to do permission checks entirely on the
    server it needs to do so in ->permission, not in ->check_acl.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Al Viro

    Christoph Hellwig
     
  • This moves logic for checking the cached ACL values from low-level
    filesystems into generic code. The end result is a streamlined ACL
    check that doesn't need to load the inode->i_op->check_acl pointer at
    all for the common cached case.

    The filesystems also don't need to check for a non-blocking RCU walk
    case in their acl_check() functions, because that is all handled at a
    VFS layer.

    Signed-off-by: Linus Torvalds
    Signed-off-by: Al Viro

    Linus Torvalds
     
  • commit fec11dd9a0109fe52fd631e5c510778d6cbff6cc caused
    a regression when we have already mounted //server/share/a
    and want to mount //server/share/a/b.

    The problem is that lookup_one_len calls __lookup_hash
    with nd pointer as NULL. Then __lookup_hash calls
    do_revalidate in the case when dentry exists and we end
    up with NULL pointer deference in cifs_d_revalidate:

    if (nd->flags & LOOKUP_RCU)
    return -ECHILD;

    Fix this by checking nd for NULL.

    Signed-off-by: Pavel Shilovsky
    Signed-off-by: Al Viro

    Pavel Shilovsky
     
  • The fsync prototype change commit 02c24a82187d accidentally overwrote
    the ssize_t return value of xfs_file_aio_write with 0 for SYNC type
    writes. Fix this by checking if an error occured when calling
    xfs_file_fsync and only change the return value in this case.
    In addition xfs_file_fsync actually returns a normal negative error, so
    fix this, too.

    Signed-off-by: Markus Trippelsdorf
    Reviewed-by: Christoph Hellwig
    Tested-by: Christoph Hellwig
    Signed-off-by: Al Viro

    Markus Trippelsdorf
     
  • After we's done complete(&req->done), there's nothing to prevent the
    scope containing *req from being gone and *req overwritten by any
    kind of junk. So we must read req->next before that...

    Signed-off-by: Al Viro

    Al Viro
     

24 Jul, 2011

7 commits


23 Jul, 2011

23 commits

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (107 commits)
    vfs: use ERR_CAST for err-ptr tossing in lookup_instantiate_filp
    isofs: Remove global fs lock
    jffs2: fix IN_DELETE_SELF on overwriting rename() killing a directory
    fix IN_DELETE_SELF on overwriting rename() on ramfs et.al.
    mm/truncate.c: fix build for CONFIG_BLOCK not enabled
    fs:update the NOTE of the file_operations structure
    Remove dead code in dget_parent()
    AFS: Fix silly characters in a comment
    switch d_add_ci() to d_splice_alias() in "found negative" case as well
    simplify gfs2_lookup()
    jfs_lookup(): don't bother with . or ..
    get rid of useless dget_parent() in btrfs rename() and link()
    get rid of useless dget_parent() in fs/btrfs/ioctl.c
    fs: push i_mutex and filemap_write_and_wait down into ->fsync() handlers
    drivers: fix up various ->llseek() implementations
    fs: handle SEEK_HOLE/SEEK_DATA properly in all fs's that define their own llseek
    Ext4: handle SEEK_HOLE/SEEK_DATA generically
    Btrfs: implement our own ->llseek
    fs: add SEEK_HOLE and SEEK_DATA flags
    reiserfs: make reiserfs default to barrier=flush
    ...

    Fix up trivial conflicts in fs/xfs/linux-2.6/xfs_super.c due to the new
    shrinker callout for the inode cache, that clashed with the xfs code to
    start the periodic workers later.

    Linus Torvalds
     
  • * 'x86-vdso-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86-64, vdso: Do not allocate memory for the vDSO
    clocksource: Change __ARCH_HAS_CLOCKSOURCE_DATA to a CONFIG option
    x86, vdso: Drop now wrong comment
    Document the vDSO and add a reference parser
    ia64: Replace clocksource.fsys_mmio with generic arch data
    x86-64: Move vread_tsc and vread_hpet into the vDSO
    clocksource: Replace vread with generic arch data
    x86-64: Add --no-undefined to vDSO build
    x86-64: Allow alternative patching in the vDSO
    x86: Make alternative instruction pointers relative
    x86-64: Improve vsyscall emulation CS and RIP handling
    x86-64: Emulate legacy vsyscalls
    x86-64: Fill unused parts of the vsyscall page with 0xcc
    x86-64: Remove vsyscall number 3 (venosys)
    x86-64: Map the HPET NX
    x86-64: Remove kernel.vsyscall64 sysctl
    x86-64: Give vvars their own page
    x86-64: Document some of entry_64.S
    x86-64: Fix alignment of jiffies variable

    Linus Torvalds
     
  • * 'x86-uv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, UV: Correct UV2 BAU destination timeout
    x86, UV: Correct failed topology memory leak
    x86, UV: Remove cpumask_t from the stack
    x86, UV: Rename hubmask to pnmask
    x86, UV: Correct reset_with_ipi()
    x86, UV: Allow for non-consecutive sockets
    x86, UV: Inline header file functions
    x86, UV: Fix smp_processor_id() use in a preemptable region
    x66, UV: Enable 64-bit ACPI MFCG support for SGI UV2 platform
    x86, UV: Clean up uv_mmrs.h

    Linus Torvalds
     
  • …/git/tip/linux-2.6-tip

    * 'x86-signal-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86: Kill handle_signal()->set_fs()
    x86, do_signal: Simplify the TS_RESTORE_SIGMASK logic
    x86, signals: Convert the X86_32 code to use set_current_blocked()
    x86, signals: Convert the IA32_EMULATION code to use set_current_blocked()

    Linus Torvalds
     
  • * 'x86-numa-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, numa: Implement pfn -> nid mapping granularity check
    x86, mm: s/PAGES_PER_ELEMENT/PAGES_PER_SECTION/

    Linus Torvalds
     
  • * 'x86-mtrr-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, mtrr: Use pci_dev->revision
    x86, mtrr: use stop_machine APIs for doing MTRR rendezvous
    stop_machine: implement stop_machine_from_inactive_cpu()
    stop_machine: reorganize stop_cpus() implementation
    x86, mtrr: lock stop machine during MTRR rendezvous sequence

    Linus Torvalds
     
  • …nel/git/tip/linux-2.6-tip

    * 'x86-microcode-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, microcode, AMD: Fix section header size check
    x86, microcode, AMD: Correct buf references

    Linus Torvalds
     
  • * 'x86-mce-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, mce: Use mce_sysdev_ prefix to group functions
    x86, mce: Use mce_chrdev_ prefix to group functions
    x86, mce: Cleanup mce_read()
    x86, mce: Cleanup mce_create()/remove_device()
    x86, mce: Check the result of ancient_init()
    x86, mce: Introduce mce_gather_info()
    x86, mce: Replace MCM_ with MCI_MISC_
    x86, mce: Replace MCE_SELF_VECTOR by irq_work
    x86, mce, severity: Clean up trivial coding style problems
    x86, mce, severity: Cleanup severity table
    x86, mce, severity: Make formatting a bit more readable
    x86, mce, severity: Fix two severities table signatures

    Linus Torvalds
     
  • * 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, efi: Properly pre-initialize table pointers
    x86, efi: Add infrastructure for UEFI 2.0 runtime services
    x86, efi: Fix argument types for SetVariable()

    Linus Torvalds
     
  • * 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, intel, power: Correct the MSR_IA32_ENERGY_PERF_BIAS message
    x86, msr: Fix typo in ENERGY_PERF_BIAS_POWERSAVE
    x86, intel, power: Initialize MSR_IA32_ENERGY_PERF_BIAS

    Linus Torvalds
     
  • …el/git/tip/linux-2.6-tip

    * 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, smpboot: Mark the names[] array in __inquire_remote_apic() as const
    x86: Convert vmalloc()+memset() to vzalloc()

    Linus Torvalds
     
  • * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86: Fix write lock scalability 64-bit issue
    x86: Unify rwsem assembly implementation
    x86: Unify rwlock assembly implementation
    x86, asm: Fix binutils 2.16 issue with __USER32_CS
    x86, asm: Cleanup thunk_64.S
    x86, asm: Flip RESTORE_ARGS arguments logic
    x86, asm: Flip SAVE_ARGS arguments logic
    x86, asm: Thin down SAVE/RESTORE_* asm macros

    Linus Torvalds
     
  • * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, ioapic: Print IR_IO_APIC_route_entry when IR is enabled
    x86, ioapic: Print IRTE when IR is enabled
    x86, x2apic: Preserve high 32-bits of IA32_APIC_BASE MSR
    x86, ioapic: Also print Dest field
    x86, ioapic: Format clean up for IOAPIC output
    x86: print APIC data a little later during boot

    Linus Torvalds
     
  • …/git/tip/linux-2.6-tip

    * 'timers-rtc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86: Serialize EFI time accesses on rtc_lock
    x86: Serialize SMP bootup CMOS accesses on rtc_lock
    rtc: stmp3xxx: Remove UIE handlers
    rtc: stmp3xxx: Get rid of mach-specific accessors
    rtc: stmp3xxx: Initialize drvdata before registering device
    rtc: stmp3xxx: Port stmp-functions to mxs-equivalents
    rtc: stmp3xxx: Restore register definitions
    rtc: vt8500: Use define instead of hardcoded value for status bit

    Linus Torvalds
     
  • …l/git/tip/linux-2.6-tip

    * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    time: Fix stupid KERN_WARN compile issue
    rtc: Avoid accumulating time drift in suspend/resume
    time: Avoid accumulating time drift in suspend/resume
    time: Catch invalid timespec sleep values in __timekeeping_inject_sleeptime

    Linus Torvalds
     
  • …rnel/git/tip/linux-2.6-tip

    * 'timers-cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    mips: Fix i8253 clockevent fallout
    i8253: Cleanup outb/inb magic
    arm: Footbridge: Use common i8253 clockevent
    mips: Use common i8253 clockevent
    x86: Use common i8253 clockevent
    i8253: Create common clockevent implementation
    i8253: Export i8253_lock unconditionally
    pcpskr: MIPS: Make config dependencies finer grained
    pcspkr: Cleanup Kconfig dependencies
    i8253: Move remaining content and delete asm/i8253.h
    i8253: Consolidate definitions of PIT_LATCH
    x86: i8253: Consolidate definitions of global_clock_event
    i8253: Alpha, PowerPC: Remove unused asm/8253pit.h
    alpha: i8253: Cleanup remaining users of i8253pit.h
    i8253: Remove I8253_LOCK config
    i8253: Make pcsp sound driver use the shared i8253_lock
    i8253: Make pcspkr input driver use the shared i8253_lock
    i8253: Consolidate all kernel definitions of i8253_lock
    i8253: Unify all kernel declarations of i8253_lock
    i8253: Create linux/i8253.h and use it in all 8253 related files

    Linus Torvalds
     
  • …/git/tip/linux-2.6-tip

    * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (24 commits)
    sched: Cleanup duplicate local variable in [enqueue|dequeue]_task_fair
    sched: Replace use of entity_key()
    sched: Separate group-scheduling code more clearly
    sched: Reorder root_domain to remove 64 bit alignment padding
    sched: Do not attempt to destroy uninitialized rt_bandwidth
    sched: Remove unused function cpu_cfs_rq()
    sched: Fix (harmless) typo 'CONFG_FAIR_GROUP_SCHED'
    sched, cgroup: Optimize load_balance_fair()
    sched: Don't update shares twice on on_rq parent
    sched: update correct entity's runtime in check_preempt_wakeup()
    xtensa: Use generic config PREEMPT definition
    h8300: Use generic config PREEMPT definition
    m32r: Use generic PREEMPT config
    sched: Skip autogroup when looking for all rt sched groups
    sched: Simplify mutex_spin_on_owner()
    sched: Remove rcu_read_lock() from wake_affine()
    sched: Generalize sleep inside spinlock detection
    sched: Make sleeping inside spinlock detection working in !CONFIG_PREEMPT
    sched: Isolate preempt counting in its own config option
    sched: Remove pointless in_atomic() definition check
    ...

    Linus Torvalds
     
  • …git/tip/linux-2.6-tip

    * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (123 commits)
    perf: Remove the nmi parameter from the oprofile_perf backend
    x86, perf: Make copy_from_user_nmi() a library function
    perf: Remove perf_event_attr::type check
    x86, perf: P4 PMU - Fix typos in comments and style cleanup
    perf tools: Make test use the preset debugfs path
    perf tools: Add automated tests for events parsing
    perf tools: De-opt the parse_events function
    perf script: Fix display of IP address for non-callchain path
    perf tools: Fix endian conversion reading event attr from file header
    perf tools: Add missing 'node' alias to the hw_cache[] array
    perf probe: Support adding probes on offline kernel modules
    perf probe: Add probed module in front of function
    perf probe: Introduce debuginfo to encapsulate dwarf information
    perf-probe: Move dwarf library routines to dwarf-aux.{c, h}
    perf probe: Remove redundant dwarf functions
    perf probe: Move strtailcmp to string.c
    perf probe: Rename DIE_FIND_CB_FOUND to DIE_FIND_CB_END
    tracing/kprobe: Update symbol reference when loading module
    tracing/kprobes: Support module init function probing
    kprobes: Return -ENOENT if probe point doesn't exist
    ...

    Linus Torvalds
     
  • * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    rcu: Fix wrong check in list_splice_init_rcu()
    net,rcu: Convert call_rcu(xt_rateest_free_rcu) to kfree_rcu()
    sysctl,rcu: Convert call_rcu(free_head) to kfree
    vmalloc,rcu: Convert call_rcu(rcu_free_vb) to kfree_rcu()
    vmalloc,rcu: Convert call_rcu(rcu_free_va) to kfree_rcu()
    ipc,rcu: Convert call_rcu(ipc_immediate_free) to kfree_rcu()
    ipc,rcu: Convert call_rcu(free_un) to kfree_rcu()
    security,rcu: Convert call_rcu(sel_netport_free) to kfree_rcu()
    security,rcu: Convert call_rcu(sel_netnode_free) to kfree_rcu()
    ia64,rcu: Convert call_rcu(sn_irq_info_free) to kfree_rcu()
    block,rcu: Convert call_rcu(disk_free_ptbl_rcu_cb) to kfree_rcu()
    scsi,rcu: Convert call_rcu(fc_rport_free_rcu) to kfree_rcu()
    audit_tree,rcu: Convert call_rcu(__put_tree) to kfree_rcu()
    security,rcu: Convert call_rcu(whitelist_item_free) to kfree_rcu()
    md,rcu: Convert call_rcu(free_conf) to kfree_rcu()

    Linus Torvalds
     
  • …l/git/tip/linux-2.6-tip

    * 'core-printk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    lockdep: Fix trace_[soft,hard]irqs_[on,off]() recursion
    printk: Fix console_sem vs logbuf_lock unlock race
    printk: Release console_sem after logbuf_lock

    Linus Torvalds
     
  • …el/git/tip/linux-2.6-tip

    * 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    lockdep: Fix lockdep_no_validate against IRQ states
    mutex: Make mutex_destroy() an inline function
    plist: Remove the need to supply locks to plist heads
    lockup detector: Fix reference to the non-existent CONFIG_DETECT_SOFTLOCKUP option

    Linus Torvalds
     
  • Replace unclear (struct dentry *) to (struct file *) typecast with ERR_CAST() macro.

    Signed-off-by: Konstantin Khlebnikov
    Signed-off-by: Al Viro

    Konstantin Khlebnikov
     
  • sbi->s_mutex isn't needed for isofs at all so we can just remove it. Generally,
    since isofs is always mounted read-only, filesystem structure cannot change
    under us. So buffer_head contents stays constant after it's filled in. That
    leaves us with possible changes of global data structures. Superblock changes
    only during filesystem mount (even remount does not change it), inodes are only
    filled in during reading from disk. So there are no changes of these structures
    to bother about.

    Arguments why sbi->s_mutex can be removed at each place:
    isofs_readdir: Accesses sb, inode, filp, local variables => s_mutex not needed
    isofs_lookup: Protected by directory's i_mutex. Accesses sb, inode, dentry,
    local variables => s_mutex not needed
    rock_ridge_symlink_readpage: Protected by page lock. Accesses sb, inode,
    local variables => s_mutex not needed.

    Signed-off-by: Jan Kara
    Signed-off-by: Al Viro

    Jan Kara