OSDN Git Service

Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
authorLinus Torvalds <torvalds@woody.linux-foundation.org>
Mon, 14 May 2007 19:27:17 +0000 (12:27 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Mon, 14 May 2007 19:27:17 +0000 (12:27 -0700)
* master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6:
  [SPARC64]: Update defconfig.
  [VIDEO]: XVR-500 and XVR-2500 need FB=y.
  [SPARC32]: asm/system.h needs asm/smp.h
  [SPARC32]: Update defconfig.
  [SPARC32]: Fix sparc32 kdebug changes.
  [SPARC64]: Accept ebus_bus_type for generic DMA ops.
  [SPARC64]: Add missing cpus_empty() check in hypervisor xcall handling.
  [SCSI]: Add help text for SCSI_ESP_CORE.
  [SPARC] SBUS: display7seg.c needs asm/io.h
  [SPARC] SBUS: bbc_i2c.c needs asm/io.h
  [SPARC64]: Be more resiliant with PCI I/O space regs.
  [SERIAL] SUNHV: Add an ID string.

MAINTAINERS
drivers/block/loop.c
include/linux/compat.h
kernel/time/timekeeping.c
kernel/timer.c

index 68a56ad..21f3fff 100644 (file)
@@ -1712,8 +1712,6 @@ L:        Linux-Kernel@vger.kernel.org
 S:     Maintained
 
 i386 SETUP CODE / CPU ERRATA WORKAROUNDS
-P:     Dave Jones
-M:     davej@codemonkey.org.uk
 P:     H. Peter Anvin
 M:     hpa@zytor.com
 S:     Maintained
index e2fc4b6..5526ead 100644 (file)
@@ -1399,6 +1399,11 @@ static struct loop_device *loop_init_one(int i)
        struct loop_device *lo;
        struct gendisk *disk;
 
+       list_for_each_entry(lo, &loop_devices, lo_list) {
+               if (lo->lo_number == i)
+                       return lo;
+       }
+
        lo = kzalloc(sizeof(*lo), GFP_KERNEL);
        if (!lo)
                goto out;
@@ -1443,17 +1448,13 @@ static void loop_del_one(struct loop_device *lo)
        kfree(lo);
 }
 
-static int loop_lock(dev_t dev, void *data)
-{
-       mutex_lock(&loop_devices_mutex);
-       return 0;
-}
-
 static struct kobject *loop_probe(dev_t dev, int *part, void *data)
 {
-       struct loop_device *lo = loop_init_one(dev & MINORMASK);
+       struct loop_device *lo;
        struct kobject *kobj;
 
+       mutex_lock(&loop_devices_mutex);
+       lo = loop_init_one(dev & MINORMASK);
        kobj = lo ? get_disk(lo->lo_disk) : ERR_PTR(-ENOMEM);
        mutex_unlock(&loop_devices_mutex);
 
@@ -1466,7 +1467,7 @@ static int __init loop_init(void)
        if (register_blkdev(LOOP_MAJOR, "loop"))
                return -EIO;
        blk_register_region(MKDEV(LOOP_MAJOR, 0), 1UL << MINORBITS,
-                                 THIS_MODULE, loop_probe, loop_lock, NULL);
+                                 THIS_MODULE, loop_probe, NULL, NULL);
 
        if (max_loop) {
                printk(KERN_INFO "loop: the max_loop option is obsolete "
index 636502c..0e69d2c 100644 (file)
@@ -261,5 +261,11 @@ asmlinkage long compat_sys_epoll_pwait(int epfd,
 asmlinkage long compat_sys_utimensat(unsigned int dfd, char __user *filename,
                                struct compat_timespec __user *t, int flags);
 
+asmlinkage long compat_sys_signalfd(int ufd,
+                               const compat_sigset_t __user *sigmask,
+                                compat_size_t sigsetsize);
+asmlinkage long compat_sys_timerfd(int ufd, int clockid, int flags,
+                               const struct compat_itimerspec __user *utmr);
+
 #endif /* CONFIG_COMPAT */
 #endif /* _LINUX_COMPAT_H */
index f9217bf..3d1042f 100644 (file)
@@ -273,6 +273,8 @@ static int timekeeping_resume(struct sys_device *dev)
        unsigned long flags;
        unsigned long now = read_persistent_clock();
 
+       clocksource_resume();
+
        write_seqlock_irqsave(&xtime_lock, flags);
 
        if (now && (now > timekeeping_suspend_time)) {
index a6c580a..5ec5490 100644 (file)
@@ -1499,8 +1499,6 @@ unregister_time_interpolator(struct time_interpolator *ti)
                prev = &curr->next;
        }
 
-       clocksource_resume();
-
        write_seqlock_irqsave(&xtime_lock, flags);
        if (ti == time_interpolator) {
                /* we lost the best time-interpolator: */