15 years agosparc64: remove unused calc_npages() in iommu_common.h
FUJITA Tomonori [Fri, 28 Mar 2008 22:56:01 +0000 (15:56 -0700)]
sparc64: remove unused calc_npages() in iommu_common.h

Signed-off-by: FUJITA Tomonori <>
Signed-off-by: Andrew Morton <>
Signed-off-by: David S. Miller <>
15 years agosparc64: add the segment boundary checking to IOMMUs while merging SG entries
FUJITA Tomonori [Fri, 28 Mar 2008 22:55:41 +0000 (15:55 -0700)]
sparc64: add the segment boundary checking to IOMMUs while merging SG entries

Some IOMMUs allocate memory areas spanning LLD's segment boundary limit.  It
forces low level drivers to have a workaround to adjust scatter lists that the
IOMMU builds.  We are in the process of making all the IOMMUs respect the
segment boundary limits to remove such work around in LLDs.

SPARC64 IOMMUs were rewritten to use the IOMMU helper functions and the commit
89c94f2f70d093f59b55d3ea8042d13889169346 made the IOMMUs not allocate memory
areas spanning the segment boundary limit.

However, SPARC64 IOMMUs allocate memory areas first then try to merge them
(while some IOMMUs walk through all the sg entries to see how they can be
merged first and allocate memory areas).  So SPARC64 IOMMUs also need the
boundary limit checking when they try to merge sg entries.

Signed-off-by: FUJITA Tomonori <>
Signed-off-by: Andrew Morton <>
Signed-off-by: David S. Miller <>
15 years ago[SPARC64]: Don't open-code {get,put}_cpu_var() in flush_tlb_pending().
David S. Miller [Thu, 27 Mar 2008 23:51:44 +0000 (16:51 -0700)]
[SPARC64]: Don't open-code {get,put}_cpu_var() in flush_tlb_pending().

Noticed by Andrew Morton.

Signed-off-by: David S. Miller <>
15 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Fri, 28 Mar 2008 22:23:01 +0000 (15:23 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/viro/vfs-2.6

* 'for-linus' of git://
  [PATCH] mnt_expire is protected by namespace_sem, no need for vfsmount_lock
  [PATCH] do shrink_submounts() for all fs types
  [PATCH] sanitize locking in mark_mounts_for_expiry() and shrink_submounts()
  [PATCH] count ghost references to vfsmounts
  [PATCH] reduce stack footprint in namespace.c

15 years agodriver core: fix small mem leak in driver_add_kobj()
Jesper Juhl [Fri, 28 Mar 2008 21:16:12 +0000 (14:16 -0700)]
driver core: fix small mem leak in driver_add_kobj()

The Coverity checker spotted that we leak the storage allocated to 'name' in
int driver_add_kobj().  The leak looks legit to me - this is the code :

int driver_add_kobj(struct device_driver *drv, struct kobject *kobj,
                    const char *fmt, ...)
        va_list args;
        char *name;
        int ret;

        va_start(args, fmt);
        name = kvasprintf(GFP_KERNEL, fmt, args);
        ^^^^^^^^ This dynamically allocates space...


        if (!name)
                return -ENOMEM;

        return kobject_add(kobj, &drv->p->kobj, "%s", name);
^^^^^^^^ This neglects to free the space allocated

Inside kobject_add() a copy of 'name' will be made and used.  As far as I can
see, Coverity is correct in flagging this as a leak, but I'd like some
configmation before the patch is applied.

This should fix it.

Signed-off-by: Jesper Juhl <>
Cc: Greg KH <>
Cc: Kay Sievers <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agodm io: write error bits form long not int
Alasdair G Kergon [Fri, 28 Mar 2008 21:16:10 +0000 (14:16 -0700)]
dm io: write error bits form long not int

write_err is an unsigned long used with set_bit() so should not be passed
around as unsigned int.

Signed-off-by: Alasdair G Kergon <>
Cc: Heiko Carstens <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agomemstick: suppress uninitialized-var warning
Andrew Morton [Fri, 28 Mar 2008 21:16:09 +0000 (14:16 -0700)]
memstick: suppress uninitialized-var warning

drivers/memstick/host/tifm_ms.c: In function 'tifm_ms_data_event':
drivers/memstick/host/tifm_ms.c:185: warning: 'p_off' may be used uninitialized in this function

Cc: Alex Dubov <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agomtd: maps/physmap: fix oops in suspend/resume/shutdown ops
Anton Vorontsov [Fri, 28 Mar 2008 21:16:09 +0000 (14:16 -0700)]
mtd: maps/physmap: fix oops in suspend/resume/shutdown ops

# reboot
[   42.351266] Flash device refused suspend due to active operation (state 0)
[   42.358195] Unable to handle kernel NULL pointer dereference at virtual address 00000078
[   42.360060] pgd = c7d9c000
[   42.362769] [00000078] *pgd=a7d8d031, *pte=00000000, *ppte=00000000
[   42.372902] Internal error: Oops: 17 [#1]
[   42.376911] Modules linked in:
[   42.379980] CPU: 0    Not tainted  (2.6.25-rc2-10642-ge8f2594-dirty #73)
[   42.380000] PC is at physmap_flash_shutdown+0x28/0x54
[   42.380000] Backtrace:
[   42.380000] [<c0130c1c>] (physmap_flash_shutdown+0x0/0x54) from [<c01207c0>] (platform_drv_shutdown+0x20/0x24)
[   42.380000]  r5:28121969 r4:c0229e08
[   42.380000] [<c01207a0>] (platform_drv_shutdown+0x0/0x24) from [<c011cd40>] (device_shutdown+0x60/0x88)
[   42.380000] [<c011cce0>] (device_shutdown+0x0/0x88) from [<c003e8a4>] (kernel_restart_prepare+0x2c/0x3c)
[   42.380000]  r4:00000000
[   42.380000] [<c003e878>] (kernel_restart_prepare+0x0/0x3c) from [<c003ea00>] (kernel_restart+0x14/0x48)
[   42.380000] [<c003e9ec>] (kernel_restart+0x0/0x48) from [<c003fdc0>] (sys_reboot+0xe8/0x1f8)
[   42.380000]  r4:01234567
[   42.380000] [<c003fcd8>] (sys_reboot+0x0/0x1f8) from [<c001aa00>] (ret_fast_syscall+0x0/0x2c)
[   42.380000]  r7:00000058 r6:00000004 r5:00000001 r4:00000000
[   42.380000] Code: 0a000009 e7953004 e1a00003 e1a0e00f (e593f078)
[   42.650051] ---[ end trace 6d6c26a0fc3141de ]---
Segmentation fault
INIT: no more processes left in this runlevel

While looping for mtd[i]s, we should stop at the mtd[i] == NULL.

This patch also removes unnecessary "if (info)" checks:
suspend/resume/shutdown ops are executed only if probe() is succeeded, so info
is guaranteed to be !NULL.

Signed-off-by: Anton Vorontsov <>
Cc: David Brownell <>
Cc: David Woodhouse <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agodm crypt: fix ctx pending
Milan Broz [Fri, 28 Mar 2008 21:16:07 +0000 (14:16 -0700)]
dm crypt: fix ctx pending

Fix regression in dm-crypt introduced in commit
3a7f6c990ad04e6f576a159876c602d14d6f7fef ("dm crypt: use async crypto").

If write requests need to be split into pieces, the code must not process them
in parallel because the crypto context cannot be shared.  So there can be
parallel crypto operations on one part of the write, but only one write bio
can be processed at a time.

This is not optimal and the workqueue code needs to be optimized for parallel
processing, but for now it solves the problem without affecting the
performance of synchronous crypto operation (most of current dm-crypt users).

Signed-off-by: Milan Broz <>
Signed-off-by: Alasdair G Kergon <>
Cc: "Rafael J. Wysocki" <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agokprobes: another MAINTAINERS update
Ananth N Mavinakayanahalli [Fri, 28 Mar 2008 21:16:07 +0000 (14:16 -0700)]
kprobes: another MAINTAINERS update

Prasanna has taken a new job. Update the MAINTAINERS file

Signed-off-by: Ananth N Mavinakayanahalli <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agoblackfin video driver: fix bug when opening/reading/mmaping BF54x and BF52x framebuff...
Michael Hennerich [Fri, 28 Mar 2008 21:16:06 +0000 (14:16 -0700)]
blackfin video driver: fix bug when opening/reading/mmaping BF54x and BF52x framebuffer simultaneously

opening/reading/mmaping BF54x and BF52x framebuffer simultaneously triggers
BUG: failure at mm/nommu.c:470/add_nommu_vma() Add VM_SHARED to the default

Signed-off-by: Michael Hennerich <>
Signed-off-by: Bryan Wu <>
Cc: Geert Uytterhoeven <>
Cc: "Antonino A. Daplas" <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agoblackfin video driver: update the BF52x EZKIT video framebuffer driver according...
Bryan Wu [Fri, 28 Mar 2008 21:16:05 +0000 (14:16 -0700)]
blackfin video driver: update the BF52x EZKIT video framebuffer driver according to LKML review

- Allocate pseudo_palette together with fbinfo
- Code cleanup

Signed-off-by: Michael Hennerich <>
Signed-off-by: Bryan Wu <>
Cc: Geert Uytterhoeven <>
Cc: "Antonino A. Daplas" <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agopci: revert SMBus unhide on HP Compaq nx6110
Jean Delvare [Fri, 28 Mar 2008 21:16:04 +0000 (14:16 -0700)]
pci: revert SMBus unhide on HP Compaq nx6110

This reverts commit 3c0a654e390d00fef9d8faed758f5e1e8078adb5 and
fixes kernel bug #10245:

The HP Compaq nc6120 has the same PCI sub-device ID as the nx6110, and the
SMBus is used by ACPI for thermal management on the nc6120, so Linux should
not attach a native driver to it.  This means that this quirk is unsafe and
has to be removed.

I also added a comment to help developers realize that adding new IDs to this
SMBus unhiding quirk table should be done only with great care, and in
particular only after checking that ACPI is not making use of the SMBus.

Signed-off-by: Jean Delvare <>
Cc: Tomasz Koprowski <>
Acked-by: Greg Kroah-Hartman <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agoext3: don't export ext3_fs.h and jbd.h
Christoph Hellwig [Fri, 28 Mar 2008 21:16:03 +0000 (14:16 -0700)]
ext3: don't export ext3_fs.h and jbd.h

Neither of the headers actually compiles when included from userpsace nor
should it be made available as userspace tools should be using the libraries
or at least headers from e2fsprogs.

Signed-off-by: Christoph Hellwig <>
Acked-by: "Theodore Ts'o" <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agokernel: add bit rotation helpers for 16 and 8 bit
Harvey Harrison [Fri, 28 Mar 2008 21:16:01 +0000 (14:16 -0700)]
kernel: add bit rotation helpers for 16 and 8 bit

Will replace open-coded variants elsewhere.  Done in the same
style as the 32-bit versions.

Signed-off-by: Harvey Harrison <>
Acked-by: Randy Dunlap <>
Cc: Johannes Berg <>
Cc: John W. Linville <>
Cc: Joe Perches <>
Cc: Jiri Benc <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agoixp4xx-beeper: add MODULE_ALIAS
Alessandro Zummo [Fri, 28 Mar 2008 21:15:59 +0000 (14:15 -0700)]
ixp4xx-beeper: add MODULE_ALIAS

The following patch allows ixp4xx-beeper to be loaded by udev
automatically when compiled as a module with kernel versions 2.4.24 and

This patch is required because 43cc71eed1250755986da4c0f9898f9a635cb3bf
("platform: prefix MODALIAS with "platform:"") changed the modalias
string to have the extra prefix.

LKG7102D7:~# udevinfo -a -p /sys/devices/platform/ixp4xx-beeper.4

 looking at device '/devices/platform/ixp4xx-beeper.4':

udev therefore tries to modprobe platform:ixp4xx-beeper instead of

LKG7102D7:~# udevtest /sys/devices/platform/ixp4xx-beeper.4
import_uevent_var: import into environment: 'PHYSDEVBUS=platform'
import_uevent_var: import into environment: 'MODALIAS=platform:ixp4xx-beeper'
main: looking at device '/devices/platform/ixp4xx-beeper.4' from
subsystem 'platform'
wait_for_sysfs: file '/sys/devices/platform/ixp4xx-beeper.4/bus'
appeared after 0 loops
main: run: 'socket:/org/kernel/udev/monitor'
main: run: '/sbin/modprobe --use-blacklist platform:ixp4xx-beeper'

With this patch, depmod adds an alias line (see below) to
modules.alias which allows modprobe to load the right module.

alias platform:ixp4xx-beeper ixp4xx-beeper

Signed-off-by: Gordon Farquharson <>
Signed-off-by: Alessandro Zummo <>
Cc: Kay Sievers <>
Cc: David Brownell <>
Cc: Atsushi Nemoto <>
Cc: Greg Kroah-Hartman <>
Cc: Dmitry Torokhov <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agoupdate to version 0.16
Andy Whitcroft [Fri, 28 Mar 2008 21:15:58 +0000 (14:15 -0700)]
update to version 0.16

This version brings proper quote tracking across lines, and brings the
handling of comments into the same mechanism ensuring nesting is correctly
handled.  It brings the usual flurry of fixes for false positives.  It also
brings a number of new checks.  The most contentious change will likely be
the checks for NR_CPUS as this throws some new warnings in kernel/sched.c.

Of note:
 - all new quote tracking across lines
 - all new comment tracking
 - new more direct, less ambigious wording for some warnings
 - recommends mutexes and completions over semaphores
 - recommends strict_strto* over simple_strto*
 - report on direct use of NR_CPUS

Andy Whitcroft (22):
      Version: 0.16
      string quote tracking should cross line boundaries
      check spacing round -> correctly across newlines
      checks for linux/ against asm/ include files should be warnings
      standardise on 'required' and 'prohibited'
      take the first end of condition when parsing statements
      values: cope with unbalanced brackets
      preprocessor #elif is not a function
      preprocessor #if should not trigger trailing statement checks
      test: allow us to limit output to a single error
      recommend real mutexes over semaphores
      asm checks should mirror those for __asm__
      warn on semaphores being used in place of completions
      trailing ; on control structure should ignore do {} while ();
      recommend strict_strtoX over simple_strtoX
      redo comment handling as a quote type
      use of NR_CPUS is normally wrong
      consistant spacing should only be about spaces
      if brace check suppression should only apply to the top-levels
      use tr/// to align spacing for operators
      move to using four parameter form of substr
      check and report modifications to include/asm

Signed-off-by: Andy Whitcroft <>
Cc: Ingo Molnar <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agonet/9p/trans_fd.c:p9_trans_fd_init(): module_init functions should return 0 on success
Andrew Morton [Fri, 28 Mar 2008 21:15:57 +0000 (14:15 -0700)]
net/9p/trans_fd.c:p9_trans_fd_init(): module_init functions should return 0 on success

Mar 23 09:06:31 opensuse103 kernel: Installing 9P2000 support
Mar 23 09:06:31 opensuse103 kernel: sys_init_module: '9pnet_fd'->init suspiciously returned 1, it should follow 0/-E convention
Mar 23 09:06:31 opensuse103 kernel: sys_init_module: loading module anyway...
Mar 23 09:06:31 opensuse103 kernel: Pid: 5323, comm: modprobe Not tainted 2.6.25-rc6-git7-default #1
Mar 23 09:06:31 opensuse103 kernel:  [<c013c253>] sys_init_module+0x172b/0x17c9
Mar 23 09:06:31 opensuse103 kernel:  [<c0108a6a>] sys_mmap2+0x62/0x77
Mar 23 09:06:31 opensuse103 kernel:  [<c01059c4>] sysenter_past_esp+0x6d/0xa9
Mar 23 09:06:31 opensuse103 kernel:  =======================

Cc: Latchesar Ionkov <>
Cc: Eric Van Hensbergen <ericvh@opteron.(none)>
Cc: David S. Miller <>
Cc: "Rafael J. Wysocki" <>
Cc: <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agoaudit: silence two kerneldoc warnings in kernel/audit.c
Dave Jones [Fri, 28 Mar 2008 21:15:56 +0000 (14:15 -0700)]
audit: silence two kerneldoc warnings in kernel/audit.c

Silence two kerneldoc warnings.

Warning(kernel/audit.c:1276): No description found for parameter 'string'
Warning(kernel/audit.c:1276): No description found for parameter 'len'

[also fix a typo for bonus points]

Signed-off-by: Dave Jones <>
Acked-by: Randy Dunlap <>
Cc: Al Viro <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agoafs: prevent double cell registration
Sven Schnelle [Fri, 28 Mar 2008 21:15:55 +0000 (14:15 -0700)]
afs: prevent double cell registration

kafs doesn't check if the cell already exists - so if you do an echo "add" >/proc/fs/afs/cells it will try to create this cell
again.  kobject will also complain about a double registration.  To prevent
such problems, return -EEXIST in that case.

Signed-off-by: Sven Schnelle <>
Signed-off-by: David Howells <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agoafs: add a MAINTAINERS record for AFS
David Howells [Fri, 28 Mar 2008 21:15:54 +0000 (14:15 -0700)]
afs: add a MAINTAINERS record for AFS

Add a MAINTAINERS record for AFS.

Signed-off-by: David Howells <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agovfs: fix data leak in nobh_write_end()
Dmitri Monakhov [Fri, 28 Mar 2008 21:15:52 +0000 (14:15 -0700)]
vfs: fix data leak in nobh_write_end()

Current nobh_write_end() implementation ignore partial writes(copied < len)
case if page was fully mapped and simply mark page as Uptodate, which is
totally wrong because area [pos+copied, pos+len) wasn't updated explicitly in
previous write_begin call.  It simply contains garbage from pagecache and
result in data leakage.

In fact issue triggered by classical testcase
open("/mnt/test", O_RDWR|O_CREAT|O_TRUNC, 0666) = 3
ftruncate(3, 409600)                    = 0
writev(3, [{"a", 1}, {NULL, 4095}], 2)  = 1
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/uio.h>
#include <sys/mman.h>
#include <errno.h>
int main(int argc, char **argv)
int fd,  ret;
void* p;
struct iovec iov[2];
fd = open(argv[1], O_RDWR|O_CREAT|O_TRUNC, 0666);
ftruncate(fd, 409600);
ret = writev(fd, iov, sizeof(iov)/sizeof(struct iovec));
printf("writev  = %d, err = %d\n", ret, errno);
return 0;
[root@ts63 ~]# mount | grep mnt2
/dev/mapper/test on /mnt2 type ext2 (rw,nobh)
[root@ts63 ~]#  /tmp/writev /mnt2/test
writev  = 1, err = 0
[root@ts63 ~]# hexdump -C /mnt2/test

00000000  61 65 62 6f 6f 74 00 00  f0 b9 b4 59 3a 00 00 00  |aeboot.....Y:...|
00000010  20 00 00 00 00 00 00 00  21 00 00 00 00 00 00 00  | .......!.......|
00000020  df df df df df df df df  df df df df df df df df  |................|
00000030  3a 00 00 00 2a 00 00 00  21 00 00 00 00 00 00 00  |:...*...!.......|
00000040  60 c0 8c 00 00 00 00 00  40 4a 8d 00 00 00 00 00  |`.......@J......|
00000050  00 00 00 00 00 00 00 00  41 00 00 00 00 00 00 00  |........A.......|
00000060  74 69 6d 65 20 64 64 20  69 66 3d 2f 64 65 76 2f  |time dd if=/dev/|
00000070  6c 6f 6f 70 30 20 20 6f  66 3d 2f 64 65 76 2f 6e  |loop0  of=/dev/n|
00000f50  00 00 00 00 00 00 00 00  31 00 00 00 00 00 00 00  |........1.......|
00000f60  6d 6b 66 73 2e 65 78 74  33 20 2f 64 65 76 2f 76  |mkfs.ext3 /dev/v|
00000f70  7a 76 67 2f 74 65 73 74  20 2d 62 34 30 39 36 00  |zvg/test -b4096.|
00000f80  a0 fe 8c 00 00 00 00 00  21 00 00 00 00 00 00 00  |........!.......|
00000f90  23 31 32 30 35 39 35 30  34 30 34 00 3a 00 00 00  |#1205950404.:...|
00000fa0  20 00 8d 00 00 00 00 00  21 00 00 00 00 00 00 00  | .......!.......|
00000fb0  d0 cf 8c 00 00 00 00 00  10 d0 8c 00 00 00 00 00  |................|
00000fc0  00 00 00 00 00 00 00 00  41 00 00 00 00 00 00 00  |........A.......|
00000fd0  6d 6f 75 6e 74 20 2f 64  65 76 2f 76 7a 76 67 2f  |mount /dev/vzvg/|
00000fe0  74 65 73 74 20 20 2f 76  7a 20 2d 6f 20 64 61 74  |test  /vz -o dat|
00000ff0  61 3d 77 72 69 74 65 62  61 63 6b 00 00 00 00 00  |a=writeback.....|
00001000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

As you can see file's page contains garbage from pagecache instead of zeros.

Attached patch:
- Add sanity check BUG_ON in order to prevent incorrect usage by caller,
  This is function invariant because page can has buffers and in no zero
  *fadata pointer at the same time.
- Always attach buffers to page is it is partial write case.
- Always switch back to generic_write_end if page has buffers.
  This is reasonable because if page already has buffer then generic_write_begin
  was called previously.

Signed-off-by: Dmitri Monakhov <>
Reviewed-by: Nick Piggin <>
Cc: <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agomemcgroup: fix spurious EBUSY on memory cgroup removal
YAMAMOTO Takashi [Fri, 28 Mar 2008 21:15:50 +0000 (14:15 -0700)]
memcgroup: fix spurious EBUSY on memory cgroup removal

Call mm_free_cgroup earlier.  Otherwise a reference due to lazy mm switching
can prevent cgroup removal.

Signed-off-by: YAMAMOTO Takashi <>
Acked-by: Balbir Singh <>
Cc: KAMEZAWA Hiroyuki <>
Cc: Paul Menage <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agoin_atomic(): document why it is unsuitable for general use
Jonathan Corbet [Fri, 28 Mar 2008 21:15:49 +0000 (14:15 -0700)]
in_atomic(): document why it is unsuitable for general use

Discourage people from inappropriately using in_atomic()

Signed-off-by: Jonathan Corbet <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agodrivers/char/drm/ati_pcigart.c: fix printk warning
Andrew Morton [Fri, 28 Mar 2008 21:15:49 +0000 (14:15 -0700)]
drivers/char/drm/ati_pcigart.c: fix printk warning

drivers/char/drm/ati_pcigart.c: In function 'drm_ati_pcigart_init':
drivers/char/drm/ati_pcigart.c:125: warning: format '%08X' expects type 'unsigned int', but argument 3 has type 'dma_addr_t'

Cc: Dave Airlie <>
Cc: Randy Dunlap <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agomtd: nand: add out label in rfc_from4
Sebastian Siewior [Fri, 28 Mar 2008 21:15:47 +0000 (14:15 -0700)]
mtd: nand: add out label in rfc_from4

This has been forgotten in commit f5bbdacc419 ("[MTD] NAND Modularize
read function") and nobody compiled the driver.

Signed-off-by: Sebastian Siewior <>
Cc: Thomas Gleixner <>
Cc: David Woodhouse <>
Cc: Joern Engel <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
15 years agoAvoid false positive warnings in kmap_atomic_prot() with DEBUG_HIGHMEM
Andrew Morton [Fri, 28 Mar 2008 18:47:34 +0000 (11:47 -0700)]
Avoid false positive warnings in kmap_atomic_prot() with DEBUG_HIGHMEM

I believe is a false
positive.  There's no way in which networking will be using highmem pages
here, so it won't be taking the KM_USER0 kmap slot, so there's no point in
performing these checks.

Cc: Pawel Staszewski <>
Cc: Ingo Molnar <>
Acked-by: Christoph Lameter <>
Cc: "David S. Miller" <>
Signed-off-by: Andrew Morton <>
 [ Really sad.  We lose almost all real-life coverage of the debug tests
   with this patch. Now it will only report problems for the cases where
   people actually end up using a HIGHMEM page, not when they just _might_
   use one.    - Linus ]
Signed-off-by: Linus Torvalds <>
15 years agoRDMA/cxgb3: Program hardware IRD with correct value
Roland Dreier [Fri, 28 Mar 2008 17:28:17 +0000 (10:28 -0700)]
RDMA/cxgb3: Program hardware IRD with correct value

Because of a typo in iwch_accept_cr(), the cxgb3 connection handling
code programs the hardware IRD (incoming RDMA read queue depth) with
the value that is passed in for the ORD (outgoing RDMA read queue
depth).  In particular this means that if an application passes in IRD
> 0 and ORD = 0 (which is a completely sane and valid thing to do for
an app that expects only incoming RDMA read requests), then the
hardware will end up programmed with IRD = 0 and the app will fail in
a mysterious way.

Fix this by using "ep->ird" instead of "ep->ord" in the intended place.

Signed-off-by: Roland Dreier <>
Acked-by: Steve Wise <>
Signed-off-by: Linus Torvalds <>
15 years agoMerge branch 'merge' of git://
Linus Torvalds [Fri, 28 Mar 2008 17:34:21 +0000 (10:34 -0700)]
Merge branch 'merge' of git://git./linux/kernel/git/paulus/powerpc

* 'merge' of git://
  [POWERPC] Fix missed hardware breakpoints across multiple threads

15 years agorevert "ACPI: drivers/acpi: elide a non-zero test on a result that is never 0"
Ingo Molnar [Fri, 28 Mar 2008 13:28:03 +0000 (14:28 +0100)]
revert "ACPI: drivers/acpi: elide a non-zero test on a result that is never 0"

Revert commit 1192aeb957402b45f311895f124e4ca41206843c ("ACPI:
drivers/acpi: elide a non-zero test on a result that is never 0")
because it turns out that thermal_cooling_device_register() does
actually return NULL if CONFIG_THERMAL is turned off (then the routine
turns into a dummy inline routine in the header files that returns NULL

This was found with randconfig testing, causing a crash during bootup:

  initcall 0x78878534 ran for 13 msecs: acpi_button_init+0x0/0x51()
  Calling initcall 0x78878585: acpi_fan_init+0x0/0x2c()
  BUG: unable to handle kernel NULL pointer dereference at 00000000
  IP: [<782b8ad0>] acpi_fan_add+0x7d/0xfd
  *pde = 00000000
  Oops: 0000 [#1]
  Modules linked in:

  Pid: 1, comm: swapper Not tainted (2.6.25-rc7-sched-devel.git-x86-latest.git #14)
  EIP: 0060:[<782b8ad0>] EFLAGS: 00010246 CPU: 0
  EIP is at acpi_fan_add+0x7d/0xfd
  EAX: b787c718 EBX: b787c400 ECX: b782ceb4 EDX: 00000007
  ESI: 00000000 EDI: b787c6f4 EBP: b782cee0 ESP: b782cecc
   DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
  Process swapper (pid: 1, ti=b782c000 task=b7846000 task.ti=b782c000)
  Stack: b787c459 00000000 b787c400 78790888 b787c60c b782cef8 782b6fb8 ffffffda
         b787c60c 00000000 78790958 b782cf0c 783005d7 b787c60c 78790958 78790584
         b782cf1c 783007f6 b782cf28 00000000 b782cf40 782ffc4a 78790958 b794d558
  Call Trace:
   [<782b6fb8>] ? acpi_device_probe+0x3e/0xdb
   [<783005d7>] ? driver_probe_device+0x82/0xfc
   [<783007f6>] ? __driver_attach+0x3a/0x70
   [<782ffc4a>] ? bus_for_each_dev+0x3e/0x60
   [<7830048c>] ? driver_attach+0x14/0x16
   [<783007bc>] ? __driver_attach+0x0/0x70
   [<7830006a>] ? bus_add_driver+0x9d/0x1b0
   [<783008c3>] ? driver_register+0x47/0xa3
   [<7813db00>] ? timespec_to_ktime+0x9/0xc
   [<782b7331>] ? acpi_bus_register_driver+0x3a/0x3c
   [<78878592>] ? acpi_fan_init+0xd/0x2c
   [<78863656>] ? kernel_init+0xac/0x1f9
   [<788635aa>] ? kernel_init+0x0/0x1f9
   [<78114563>] ? kernel_thread_helper+0x7/0x10
  Code: 6e 78 e8 57 44 e7 ff 58 e9 93 00 00 00 8b 55 f0 8d bb f4 02 00 00 80 4b 2d 10 8b 03 e8 87 cb ff ff 8d 83 18 03 00 00 80 63 2d ef <ff> 35 00 00 00 00 50 68 e8 9c 6e 78 e8 22 44 e7 ff b9 b6 9c 6e
  EIP: [<782b8ad0>] acpi_fan_add+0x7d/0xfd SS:ESP 0068:b782cecc
  ---[ end trace 778e504de7e3b1e3 ]---
  Kernel panic - not syncing: Attempted to kill init!

Signed-off-by: Ingo Molnar <>
Acked-by: Julia Lawall <>
Signed-off-by: Linus Torvalds <>
15 years ago[POWERPC] Fix missed hardware breakpoints across multiple threads
Michael Ellerman [Fri, 28 Mar 2008 08:11:48 +0000 (19:11 +1100)]
[POWERPC] Fix missed hardware breakpoints across multiple threads

There is a bug in the powerpc DABR (data access breakpoint) handling,
which can result in us missing breakpoints if several threads are trying
to break on the same address.

The circumstances are that do_page_fault() calls do_dabr(), this clears
the DABR (sets it to 0) and sets up the signal which will report to
userspace that the DABR was hit. The do_signal() code will restore the DABR
value on the way out to userspace.

If we reschedule before calling do_signal(), __switch_to() will check the
cached DABR value and compare it to the new thread's value, if they match
we don't set the DABR in hardware.

So if two threads have the same DABR value, and we schedule from one to
the other after taking the interrupt for the first thread hitting the DABR,
the second thread will run without the DABR set in hardware.

The cleanest fix is to move the cache update into set_dabr(), that way we
can't forget to do it.

Reported-by: Jan Kratochvil <>
Signed-off-by: Michael Ellerman <>
Signed-off-by: Paul Mackerras <>
15 years agoRevert "SLUB: remove useless masking of GFP_ZERO"
Linus Torvalds [Fri, 28 Mar 2008 03:56:33 +0000 (20:56 -0700)]
Revert "SLUB: remove useless masking of GFP_ZERO"

This reverts commit 3811dbf67162bd08412f1b0e02e554f353e93bdb.

The masking was not at all useless, and it was sensible.  We handle
GFP_ZERO in the caller, and passing it down to any page allocator logic
is buggy and wrong.

Signed-off-by: Linus Torvalds <>
15 years agoMerge git://
Linus Torvalds [Fri, 28 Mar 2008 01:52:43 +0000 (18:52 -0700)]
Merge git://git./linux/kernel/git/rusty/linux-2.6-for-linus

* git://
  lguest: comment documentation update.
  lguest: Don't need comment terminator before disk section.
  lguest: lguest.txt documentation fix
  lguest: Add puppies which where previously missing.
  virtio_pci: unregister virtio device at device remove

15 years ago[PATCH] mnt_expire is protected by namespace_sem, no need for vfsmount_lock
Al Viro [Sat, 22 Mar 2008 20:14:30 +0000 (16:14 -0400)]
[PATCH] mnt_expire is protected by namespace_sem, no need for vfsmount_lock

Signed-off-by: Al Viro <>
15 years ago[PATCH] do shrink_submounts() for all fs types
Al Viro [Sat, 22 Mar 2008 04:46:23 +0000 (00:46 -0400)]
[PATCH] do shrink_submounts() for all fs types

... and take it out of ->umount_begin() instances.  Call with all locks
already taken (by do_umount()) and leave calling release_mounts() to
caller (it will do release_mounts() anyway, so we can just put into
the same list).

Signed-off-by: Al Viro <>
15 years ago[PATCH] sanitize locking in mark_mounts_for_expiry() and shrink_submounts()
Al Viro [Sat, 22 Mar 2008 04:21:53 +0000 (00:21 -0400)]
[PATCH] sanitize locking in mark_mounts_for_expiry() and shrink_submounts()

... and fix a race on access of ->mnt_share without namespace_sem
in the latter.

Signed-off-by: Al Viro <>
15 years ago[PATCH] count ghost references to vfsmounts
Al Viro [Sat, 22 Mar 2008 03:59:49 +0000 (23:59 -0400)]
[PATCH] count ghost references to vfsmounts

make propagate_mount_busy() exclude references from the vfsmounts
that had been isolated by umount_tree() and are just waiting for
release_mounts() to dispose of their ->mnt_parent/->mnt_mountpoint.

Signed-off-by: Al Viro <>
15 years ago[PATCH] reduce stack footprint in namespace.c
Al Viro [Sat, 22 Mar 2008 00:48:19 +0000 (20:48 -0400)]
[PATCH] reduce stack footprint in namespace.c

A lot of places misuse struct nameidata when they need struct path.

Signed-off-by: Al Viro <>
15 years agolguest: comment documentation update.
Rusty Russell [Fri, 28 Mar 2008 16:05:53 +0000 (11:05 -0500)]
lguest: comment documentation update.

Took some cycles to re-read the Lguest Journey end-to-end, fix some
rot and tighten some phrases.

Only comments change.  No new jokes, but a couple of recycled old jokes.

Signed-off-by: Rusty Russell <>
15 years agolguest: Don't need comment terminator before disk section.
Rusty Russell [Fri, 28 Mar 2008 16:05:52 +0000 (11:05 -0500)]
lguest: Don't need comment terminator before disk section.

Signed-off-by: Rusty Russell <>
15 years agolguest: lguest.txt documentation fix
Paul Bolle [Tue, 11 Mar 2008 12:36:14 +0000 (13:36 +0100)]
lguest: lguest.txt documentation fix

Mention the config options for the Virtio drivers and move the Virtualization
menu to the toplevel.

Signed-off-by: Paul Bolle <>
Signed-off-by: Rusty Russell <>
15 years agolguest: Add puppies which where previously missing.
Tim Ansell [Mon, 11 Feb 2008 07:43:42 +0000 (18:13 +1030)]
lguest: Add puppies which where previously missing.

lguest doesn't have features, it has puppies!

Signed-off-by: Timothy R Ansell <>
Signed-off-by: Rusty Russell <>
15 years agovirtio_pci: unregister virtio device at device remove
Anthony Liguori [Thu, 20 Mar 2008 01:35:04 +0000 (20:35 -0500)]
virtio_pci: unregister virtio device at device remove

Make sure to call unregister_virtio_device() when a virtio device is removed.
Otherwise, virtio_pci.ko cannot be rmmod'd.

This was spotted by Marcelo Tosatti.

Signed-off-by: Anthony Liguori <>
Signed-off-by: Rusty Russell <>
15 years agoMerge branch 'merge' of git://
Linus Torvalds [Thu, 27 Mar 2008 23:12:25 +0000 (16:12 -0700)]
Merge branch 'merge' of git://git./linux/kernel/git/paulus/powerpc

* 'merge' of git://
  [POWERPC] update pasemi_defconfig

15 years agox86: prefetch fix #2
Ingo Molnar [Thu, 27 Mar 2008 20:29:09 +0000 (21:29 +0100)]
x86: prefetch fix #2

Linus noticed a second bug and an uncleanliness:

 - we'd return on any instruction fetch fault

 - we'd use both the value of 16 and the PF_INSTR symbol which are
   the same and make no sense

the cleanup nicely unifies this piece of logic.

Signed-off-by: Ingo Molnar <>
15 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Thu, 27 Mar 2008 20:20:47 +0000 (13:20 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/x86/linux-2.6-x86

* 'for-linus' of git://
  xen: fix UP setup of shared_info
  xen: fix RMW when unmasking events
  x86, documentation: nmi_watchdog=2 works on x86_64
  x86: stricter check in follow_huge_addr()
  rdc321x: GPIO routines bugfixes
  x86: ptrace.c: fix defined-but-unused warnings
  x86: fix prefetch workaround

15 years agoMerge branch 'avr32-fixes' of git://
Linus Torvalds [Thu, 27 Mar 2008 16:14:07 +0000 (09:14 -0700)]
Merge branch 'avr32-fixes' of git://git./linux/kernel/git/hskinnemoen/avr32-2.6

* 'avr32-fixes' of git://
  avr32: Fix bug in early resource allocation code
  avr32: Build fix for CONFIG_BUG=n
  avr32: Work around byteswap bug in gcc < 4.2

15 years agoxen: fix UP setup of shared_info
Jeremy Fitzhardinge [Mon, 17 Mar 2008 23:36:53 +0000 (16:36 -0700)]
xen: fix UP setup of shared_info

We need to set up the shared_info pointer once we've mapped the real
shared_info into its fixmap slot.  That needs to happen once the general
pagetable setup has been done.  Previously, the UP shared_info was set
up one in xen_start_kernel, but that was left pointing to the dummy
shared info.  Unfortunately there's no really good place to do a later
setup of the shared_info in UP, so just do it once the pagetable setup
has been done.

[ Stable: needed in 2.6.24.x ]

Signed-off-by: Jeremy Fitzhardinge <>
Cc: Stable Kernel <>
Signed-off-by: Ingo Molnar <>
15 years agoxen: fix RMW when unmasking events
Jeremy Fitzhardinge [Mon, 17 Mar 2008 23:36:52 +0000 (16:36 -0700)]
xen: fix RMW when unmasking events

xen_irq_enable_direct and xen_sysexit were using "andw $0x00ff,
XEN_vcpu_info_pending(vcpu)" to unmask events and test for pending ones
in one instuction.

Unfortunately, the pending flag must be modified with a locked operation
since it can be set by another CPU, and the unlocked form of this
operation was causing the pending flag to get lost, allowing the processor
to return to usermode with pending events and ultimately deadlock.

The simple fix would be to make it a locked operation, but that's rather
costly and unnecessary.  The fix here is to split the mask-clearing and
pending-testing into two instructions; the interrupt window between
them is of no concern because either way pending or new events will
be processed.

This should fix lingering bugs in using direct vcpu structure access too.

[ Stable: needed in 2.6.24.x ]

Signed-off-by: Jeremy Fitzhardinge <>
Cc: Stable <>
Signed-off-by: Ingo Molnar <>
15 years agox86, documentation: nmi_watchdog=2 works on x86_64
Marcin Slusarz [Sun, 23 Mar 2008 20:06:30 +0000 (21:06 +0100)]
x86, documentation: nmi_watchdog=2 works on x86_64

Signed-off-by: Marcin Slusarz <>
Cc: Peter Zijlstra <>
Signed-off-by: Ingo Molnar <>
15 years agox86: stricter check in follow_huge_addr()
Christoph Lameter [Thu, 27 Mar 2008 04:03:04 +0000 (21:03 -0700)]
x86: stricter check in follow_huge_addr()

The first page of the compound page is determined in follow_huge_addr()
but then PageCompound() only checks if the page is part of a compound page.
PageHead() allows checking if this is indeed the first page of the

Cc: Jeremy Fitzhardinge <>
Signed-off-by: Christoph Lameter <>
Signed-off-by: Ingo Molnar <>
15 years agordc321x: GPIO routines bugfixes
Florian Fainelli [Wed, 26 Mar 2008 21:39:15 +0000 (22:39 +0100)]
rdc321x: GPIO routines bugfixes

This patch fixes the use of GPIO routines which are in the PCI
configuration space of the RDC321x, therefore reading/writing
to this space without spinlock protection can be problematic.

We also now request and free GPIOs and support the MGB100
board, previous code was very AR525W-centric.

Signed-off-by: Volker Weiss <>
Signed-off-by: Florian Fainelli <>
Signed-off-by: Ingo Molnar <>
15 years agox86: ptrace.c: fix defined-but-unused warnings
Andrew Morton [Tue, 4 Mar 2008 23:05:39 +0000 (15:05 -0800)]
x86: ptrace.c: fix defined-but-unused warnings

arch/x86/kernel/ptrace.c:548: warning: 'ptrace_bts_get_size' defined but not used
arch/x86/kernel/ptrace.c:558: warning: 'ptrace_bts_read_record' defined but not used
arch/x86/kernel/ptrace.c:607: warning: 'ptrace_bts_clear' defined but not used
arch/x86/kernel/ptrace.c:617: warning: 'ptrace_bts_drain' defined but not used
arch/x86/kernel/ptrace.c:720: warning: 'ptrace_bts_config' defined but not used
arch/x86/kernel/ptrace.c:788: warning: 'ptrace_bts_status' defined but not used

Cc: Roland McGrath <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Ingo Molnar <>
Signed-off-by: Thomas Gleixner <>
15 years agox86: fix prefetch workaround
Ingo Molnar [Thu, 27 Mar 2008 14:58:28 +0000 (15:58 +0100)]
x86: fix prefetch workaround

some early Athlon XP's and Opterons generate bogus faults on prefetch
instructions. The workaround for this regressed over .24 - reinstate it.

Signed-off-by: Ingo Molnar <>
15 years agoMerge branch 'release' of git://
Linus Torvalds [Thu, 27 Mar 2008 15:03:22 +0000 (08:03 -0700)]
Merge branch 'release' of git://git./linux/kernel/git/lenb/linux-acpi-2.6

* 'release' of git://
  ACPI: drivers/acpi: elide a non-zero test on a result that is never 0
  pnpacpi: reduce printk severity for "pnpacpi: exceeded the max number of ..."
  cpuidle: fix 100% C0 statistics regression
  cpuidle: fix cpuidle time and usage overflow
  ACPI: fix mis-merge -- invoke acpi_unlazy_tlb() only on C3 entry
  ACPI: fix a regression of ACPI device driver autoloading
  ACPI: SBS: remove typo from sbchc.c

15 years agoGive futex init a proper name
Benjamin Herrenschmidt [Thu, 27 Mar 2008 03:52:15 +0000 (14:52 +1100)]
Give futex init a proper name

The futex init function is called init(). This is a pain in the neck
when debugging when you code dies in ... init :-)

This renames it to futex_init().

Signed-off-by: Benjamin Herrenschmidt <>
Signed-off-by: Linus Torvalds <>
15 years agoavr32: Fix bug in early resource allocation code
Haavard Skinnemoen [Thu, 27 Mar 2008 14:24:12 +0000 (15:24 +0100)]
avr32: Fix bug in early resource allocation code

add_reserved_region() tries to keep the resource list sorted, so when
looking for a place to insert the new resource, it may break out
before the last entry.

When this happens, the list is broken in two because the sibling field
of the new entry doesn't point to the next resource. Fix it by
updating the new resource's sibling field appropriately.

Signed-off-by: Haavard Skinnemoen <>
15 years agoACPI: drivers/acpi: elide a non-zero test on a result that is never 0
Julia Lawall [Thu, 27 Mar 2008 05:48:22 +0000 (01:48 -0400)]
ACPI: drivers/acpi: elide a non-zero test on a result that is never 0

The function thermal_cooling_device_register always returns either a valid
pointer or a value made with ERR_PTR, so a test for non-zero on the result
will always succeed.

The problem was found using the following semantic match.

expression E, E1;
statement S,S1;
position p;

E = thermal_cooling_device_register(...)
... when != E = E1
if@p (E) S else S1

position a.p;
expression E,E1;
statement S,S1;

... when != E = E1
if@p (E) S else S1

@depends on !n@
expression E;
statement S,S1;
position a.p;

* if@p (E)
  S else S1

Signed-off-by: Julia Lawall <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Len Brown <>
15 years agoMerge branches 'release', 'idle', 'redhat-bugzilla-436589', 'sbs' and 'video' into...
Len Brown [Thu, 27 Mar 2008 02:50:09 +0000 (22:50 -0400)]
Merge branches 'release', 'idle', 'redhat-bugzilla-436589', 'sbs' and 'video' into release

15 years agoMerge git://
Linus Torvalds [Thu, 27 Mar 2008 01:35:50 +0000 (18:35 -0700)]
Merge git://git./linux/kernel/git/davem/net-2.6

* git:// (43 commits)
  [IPSEC]: Fix BEET output
  [ICMP]: Dst entry leak in icmp_send host re-lookup code (v2).
  [AX25]: Remove obsolete references to BKL from TODO file.
  [NET]: Fix multicast device ioctl checks
  [IRDA]: Store irnet_socket termios properly.
  [UML]: uml-net: don't set IFF_ALLMULTI in set_multicast_list
  [VLAN]: Don't copy ALLMULTI/PROMISC flags from underlying device
  netxen, phy/marvell, skge: minor checkpatch fixes
  S2io: Handle TX completions on the same CPU as the sender for MIS-X interrupts
  b44: Truncate PHY address
  skge napi->poll() locking bug
  rndis_host: fix oops when query for OID_GEN_PHYSICAL_MEDIUM fails
  cxgb3: Fix lockdep problems with sge.reg_lock
  ehea: Fix IPv6 support
  dm9000: Support promisc and all-multi modes
  dm9601: configure MAC to drop invalid (crc/length) packets
  dm9601: add Hirose USB-100 device ID
  Marvell PHY m88e1111 driver fix
  netxen: fix rx dropped stats
  netxen: remove low level tx lock

15 years agoMerge git://
Linus Torvalds [Thu, 27 Mar 2008 01:35:22 +0000 (18:35 -0700)]
Merge git://git./linux/kernel/git/davem/sparc-2.6

* git://
  [SPARC64]: Define TASK_SIZE_OF()
  [SPARC64]: flush_ptrace_access() needs preemption disable.
  [SPARC64]: Update defconfig.
  [SPARC64]: Fix allnoconfig build, ptrace.c missing CONFIG_COMPAT checks.
  [SPARC64]: Fix __get_cpu_var in preemption-enabled area.
  [SPARC64]: Fix sparse warnings in arch/sparc64/kernel/signal.c
  [SPARC64]: Fix most sparse warnings in arch/sparc64/kernel/sys_sparc.c
  [SPARC64]: Fix sparse warnings in arch/sparc64/kernel/time.c
  [SPARC64]: Fix sparse warnings in arch/sparc64/kernel/ptrace.c
  [SPARC64]: Fix sparse warnings in arch/sparc64/kernel/irq.c
  [SPARC64]: Fix sparse warnings in arch/sparc64/kernel/iommu.c
  [SPARC64]: Fix sparse errors in arch/sparc64/kernel/traps.c
  [SPARC64]: Fix sparse warnings in arch/sparc64/kernel/{cpu,setup}.c
  [SPARC64]: Make save_stack_trace() more efficient.

15 years ago[SPARC64]: Define TASK_SIZE_OF()
David S. Miller [Thu, 27 Mar 2008 00:32:33 +0000 (17:32 -0700)]
[SPARC64]: Define TASK_SIZE_OF()

This make "cat /proc/${PID}/pagemap" more efficient for
32-bit tasks.

Based upon a report by Mariusz Kozlowski.

Signed-off-by: David S. Miller <>
15 years ago[IPSEC]: Fix BEET output
Herbert Xu [Wed, 26 Mar 2008 23:51:09 +0000 (16:51 -0700)]
[IPSEC]: Fix BEET output

The IPv6 BEET output function is incorrectly including the inner
header in the payload to be protected.  This causes a crash as
the packet doesn't actually have that many bytes for a second

The IPv4 BEET output on the other hand is broken when it comes
to handling an inner IPv6 header since it always assumes an
inner IPv4 header.

This patch fixes both by making sure that neither BEET output
function touches the inner header at all.  All access is now
done through the protocol-independent cb structure.  Two new
attributes are added to make this work, the IP header length
and the IPv4 option length.  They're filled in by the inner
mode's output function.

Thanks to Joakim Koskela for finding this problem.

Signed-off-by: Herbert Xu <>
Signed-off-by: David S. Miller <>
15 years agoMerge branch 'master' of git://
David S. Miller [Wed, 26 Mar 2008 23:09:43 +0000 (16:09 -0700)]
Merge branch 'master' of git://git./linux/kernel/git/linville/wireless-2.6

15 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Wed, 26 Mar 2008 22:02:12 +0000 (15:02 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/x86/linux-2.6-x86

* 'for-linus' of git://
  x86: fix performance drop for glx
  x86: fix trim mtrr not to setup_memory two times
  x86: GEODE: add missing module.h include
  x86, cpufreq: fix Speedfreq-SMI call that clobbers ECX
  x86: fix memoryless node oops during boot
  x86: add dmi quirk for io_delay
  x86: convert mtrr/generic.c to kernel-doc
  x86: Documentation/i386/IO-APIC.txt: fix description

15 years agohugetlb: fix potential livelock in return_unused_surplus_hugepages()
Nishanth Aravamudan [Wed, 26 Mar 2008 21:40:20 +0000 (14:40 -0700)]
hugetlb: fix potential livelock in return_unused_surplus_hugepages()

Running the counters testcase from libhugetlbfs results in on 2.6.25-rc5
and 2.6.25-rc5-mm1:

    BUG: soft lockup - CPU#3 stuck for 61s! [counters:10531]
    NIP: c0000000000d1f3c LR: c0000000000d1f2c CTR: c0000000001b5088
    REGS: c000005db12cb360 TRAP: 0901   Not tainted  (2.6.25-rc5-autokern1)
    MSR: 8000000000009032 <EE,ME,IR,DR>  CR: 48008448  XER: 20000000
    TASK = c000005dbf3d6000[10531] 'counters' THREAD: c000005db12c8000 CPU: 3
    GPR00: 0000000000000004 c000005db12cb5e0 c000000000879228 0000000000000004
    GPR04: 0000000000000010 0000000000000000 0000000000200200 0000000000100100
    GPR08: c0000000008aba10 000000000000ffff 0000000000000004 0000000000000000
    GPR12: 0000000028000442 c000000000770080
    NIP [c0000000000d1f3c] .return_unused_surplus_pages+0x84/0x18c
    LR [c0000000000d1f2c] .return_unused_surplus_pages+0x74/0x18c
    Call Trace:
    [c000005db12cb5e0] [c000005db12cb670] 0xc000005db12cb670 (unreliable)
    [c000005db12cb670] [c0000000000d24c4] .hugetlb_acct_memory+0x2e0/0x354
    [c000005db12cb740] [c0000000001b5048] .truncate_hugepages+0x1d4/0x214
    [c000005db12cb890] [c0000000001b50a4] .hugetlbfs_delete_inode+0x1c/0x3c
    [c000005db12cb920] [c000000000103fd8] .generic_delete_inode+0xf8/0x1c0
    [c000005db12cb9b0] [c0000000001b5100] .hugetlbfs_drop_inode+0x3c/0x24c
    [c000005db12cba50] [c00000000010287c] .iput+0xdc/0xf8
    [c000005db12cbad0] [c0000000000fee54] .dentry_iput+0x12c/0x194
    [c000005db12cbb60] [c0000000000ff050] .d_kill+0x6c/0xa4
    [c000005db12cbbf0] [c0000000000ffb74] .dput+0x18c/0x1b0
    [c000005db12cbc70] [c0000000000e9e98] .__fput+0x1a4/0x1e8
    [c000005db12cbd10] [c0000000000e61ec] .filp_close+0xb8/0xe0
    [c000005db12cbda0] [c0000000000e62d0] .sys_close+0xbc/0x134
    [c000005db12cbe30] [c00000000000872c] syscall_exit+0x0/0x40
    Instruction dump:
    ebbe8038 38800010 e8bf0002 3bbd0008 7fa3eb78 38a50001 7ca507b4 4818df25
    60000000 38800010 38a00000 7c601b78 <7fa3eb782f800010 409d0008 38000010

This was tracked down to a potential livelock in
return_unused_surplus_hugepages().  In the case where we have surplus
pages on some node, but no free pages on the same node, we may never
break out of the loop. To avoid this livelock, terminate the search if
we iterate a number of times equal to the number of online nodes without
freeing a page.

Thanks to Andy Whitcroft and Adam Litke for helping with debugging and
the patch.

Signed-off-by: Nishanth Aravamudan <>
Signed-off-by: Linus Torvalds <>
15 years agohugetlb: indicate surplus huge page counts in per-node meminfo
Nishanth Aravamudan [Wed, 26 Mar 2008 21:37:53 +0000 (14:37 -0700)]
hugetlb: indicate surplus huge page counts in per-node meminfo

Currently we show the surplus hugetlb pool state in /proc/meminfo, but
not in the per-node meminfo files, even though we track the information
on a per-node basis. Printing it there can help track down dynamic pool
bugs including the one in the follow-on patch.

Signed-off-by: Nishanth Aravamudan <>
Signed-off-by: Linus Torvalds <>
15 years agox86: fix performance drop for glx
Suresh Siddha [Wed, 26 Mar 2008 00:39:12 +0000 (17:39 -0700)]
x86: fix performance drop for glx

fix the 3D performance drop reported at:

fb drivers are using ioremap()/ioremap_nocache(), followed by mtrr_add with
WC attribute. Recent changes in page attribute code made both
ioremap()/ioremap_nocache() mappings as UC (instead of previous UC-). This
breaks the graphics performance, as the effective memory type is UC instead
of expected WC.

The correct way to fix this is to add ioremap_wc() (which uses UC- in the
absence of PAT kernel support and WC with PAT) and change all the
fb drivers to use this new ioremap_wc() API.

We can take this correct and longer route for post 2.6.25. For now,
revert back to the UC- behavior for ioremap/ioremap_nocache.

Signed-off-by: Suresh Siddha <>
Signed-off-by: Venkatesh Pallipadi <>
Cc: Arjan van de Ven <>
Signed-off-by: Ingo Molnar <>
15 years agox86: fix trim mtrr not to setup_memory two times
Yinghai Lu [Sun, 23 Mar 2008 07:16:49 +0000 (00:16 -0700)]
x86: fix trim mtrr not to setup_memory two times

we could call find_max_pfn() directly instead of setup_memory() to get
max_pfn needed for mtrr trimming.

otherwise setup_memory() is called two times... that is duplicated...

[ both Thomas and me simulated a double call to
  setup_bootmem_allocator() and can confirm that it is a real bug
  which can hang in certain configs. It's not been reported yet but
  that is probably due to the relatively scarce nature of
  MTRR-trimming systems. ]

Signed-off-by: Yinghai Lu <>
Signed-off-by: Ingo Molnar <>
15 years agox86: GEODE: add missing module.h include
Andres Salomon [Wed, 26 Mar 2008 18:13:01 +0000 (14:13 -0400)]
x86: GEODE: add missing module.h include

On Wed, 26 Mar 2008 11:56:22 -0600
Jordan Crouse <> wrote:

> On 26/03/08 14:31 +0100, Stefan Pfetzing wrote:
> > Hello Jordan,
> >
> > I just tried to build your geodwdt driver for the geode watchdog. Therefore
> > I pulled your repository from (or more,
> > the git url).
> >
> > I tried to build the geodewdt driver as a module - which didn't work, and
> > it failed with the same problem as earlier mentioned on lkmk [1]. I also
> > checked the fix [2], but that seems to be already in your (or linus) tree -
> > and so I'm unsure what the problem is.
> >
> > [1]
> > [2]
> >
> > Building directly into the kernel seems to work.
> >
> > Maybe you have some idea?
> Hmm - that is strange.  Exporting the symbols should work.  I recommend
> starting over with a clean tree.
> CCing Andres - any thoughts?
> Jordan

Er, yeah.  The patch below should fix it.  This should probably go into

Oops, EXPORT_SYMBOL_GPL wasn't being declared due to this header
being missing.

Signed-off-by: Andres Salomon <>
Signed-off-by: Ingo Molnar <>
15 years agox86, cpufreq: fix Speedfreq-SMI call that clobbers ECX
Stephan Diestelhorst [Mon, 10 Mar 2008 15:05:41 +0000 (16:05 +0100)]
x86, cpufreq: fix Speedfreq-SMI call that clobbers ECX

I have found that using SMI to change the cpu's frequency on my DELL
Latitude L400 clobbers the ECX register in speedstep_set_state, causing
unneccessary retries because the "state" variable has changed silently (GCC
assumes it is still present in ECX).

play safe and avoid gcc caching any register across IO port accesses
that trigger SMIs.

Signed-off by: <>
Signed-off-by: Ingo Molnar <>
15 years agox86: fix memoryless node oops during boot
Yinghai Lu [Mon, 25 Feb 2008 07:23:09 +0000 (23:23 -0800)]
x86: fix memoryless node oops during boot

fix oops during boot reported in this thread:

enable booting on memoryless nodes.

Reported-by: Kamalesh Babulal <>
Signed-off-by: Ingo Molnar <>
15 years agox86: add dmi quirk for io_delay
Ingo Molnar [Fri, 21 Mar 2008 09:06:32 +0000 (10:06 +0100)]
x86: add dmi quirk for io_delay

reported by, in:

Signed-off-by: Ingo Molnar <>
Signed-off-by: Thomas Gleixner <>
15 years agox86: convert mtrr/generic.c to kernel-doc
Randy Dunlap [Thu, 13 Mar 2008 23:59:12 +0000 (16:59 -0700)]
x86: convert mtrr/generic.c to kernel-doc

Convert function comment blocks to kernel-doc notation.

Signed-off-by: Randy Dunlap <>
Signed-off-by: Ingo Molnar <>
Signed-off-by: Thomas Gleixner <>
15 years agox86: Documentation/i386/IO-APIC.txt: fix description
Nick Andrew [Tue, 4 Mar 2008 23:05:40 +0000 (15:05 -0800)]
x86: Documentation/i386/IO-APIC.txt: fix description

The description of the interrupt routing doesn't match the (nice) diagram.

Signed-off-by: Nick Andrew <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Ingo Molnar <>
Signed-off-by: Thomas Gleixner <>
15 years agokprobes: MAINTAINERS update
Masami Hiramatsu [Wed, 26 Mar 2008 19:53:19 +0000 (15:53 -0400)]
kprobes: MAINTAINERS update

Add Masami Hiramatsu to kprobes maintainers

Signed-off-by: Masami Hiramatsu <>
Signed-off-by: Linus Torvalds <>
15 years agoMerge branch 'slab-linus' of git://
Linus Torvalds [Wed, 26 Mar 2008 18:30:17 +0000 (11:30 -0700)]
Merge branch 'slab-linus' of git://git./linux/kernel/git/christoph/vm

* 'slab-linus' of git://
  slab: fix cache_cache bootstrap in kmem_cache_init()
  count_partial() is not used if !SLUB_DEBUG and !CONFIG_SLABINFO

15 years agoMerge branch 'master' of git://
Linus Torvalds [Wed, 26 Mar 2008 18:29:35 +0000 (11:29 -0700)]
Merge branch 'master' of git://git./linux/kernel/git/tglx/linux-2.6-hrt

* 'master' of git://
  NOHZ: reevaluate idle sleep length after add_timer_on()
  clocksource: revert: use init_timer_deferrable for clocksource_watchdog

15 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Wed, 26 Mar 2008 18:27:24 +0000 (11:27 -0700)]
Merge branch 'for-linus' of git://

* 'for-linus' of git://
  relay: set an spd_release() hook for splice
  set relay file can not be read by pread(2)

15 years agoSVCRDMA: Check num_sge when setting LAST_CTXT bit
Tom Tucker [Wed, 26 Mar 2008 02:27:19 +0000 (22:27 -0400)]
SVCRDMA: Check num_sge when setting LAST_CTXT bit

The RDMACTXT_F_LAST_CTXT bit was getting set incorrectly
when the last chunk in the read-list spanned multiple pages. This
resulted in a kernel panic when the wrong context was used to
build the RPC iovec page list.

RDMA_READ is used to fetch RPC data from the client for
NFS_WRITE requests. A scatter-gather is used to map the
advertised client side buffer to the server-side iovec and
associated page list.

WR contexts are used to convey which scatter-gather entries are
handled by each WR. When the write data is large, a single RPC may
require multiple RDMA_READ requests so the contexts for a single RPC
are chained together in a linked list. The last context in this list
is marked with a bit RDMACTXT_F_LAST_CTXT so that when this WR completes,
the CQ handler code can enqueue the RPC for processing.

The code in rdma_read_xdr was setting this bit on the last two
contexts on this list when the last read-list chunk spanned multiple
pages. This caused the svc_rdma_recvfrom logic to incorrectly build
the RPC and caused the kernel to crash because the second-to-last
context doesn't contain the iovec page list.

Modified the condition that sets this bit so that it correctly detects
the last context for the RPC.

Signed-off-by: Tom Tucker <>
Tested-by: Roland Dreier <>
Signed-off-by: J. Bruce Fields <>
Signed-off-by: Linus Torvalds <>
15 years agoRevert "PCI: remove transparent bridge sizing"
Linus Torvalds [Wed, 26 Mar 2008 18:22:40 +0000 (11:22 -0700)]
Revert "PCI: remove transparent bridge sizing"

This reverts commit 8fa5913d54f3b1e09948e6a0db34da887e05ff1f, which
caused various interesting problems for people, including wrong resource
allocations.  See for example bugzilla entry "2.6.25-rc2: ohci1394
problem (MMIO broken)" at

And Gary Hade says:

 "The same change had also exposed an issue reported by Paul Martin that
  has been causing an Oops while hotplugging ThinkPads to a ThinkPad
  Dock II.  See

  I have a fix for the ThinkPad docking Oops but if the issue being
  discussed here is caused by the transparent bridge sizing removal
  change I totally agree that it should be reverted."

  The transparent bridge sizing removal change was motivated by
  insufficient PCI memory resource for a transparent bridge window that
  was being created as a result of expansion ROM(s) being included in
  the transparent bridge sizing calculations.

  A later "PCI: Remove default PCI expansion ROM memory allocation"
  change ( re: ) removes the
  expansion ROM(s) from the transparent bridge sizing calculations which
  actually resolves the original issue in a different manner.  So, even
  if the "PCI: remove transparent bridge sizing" is not problematic it
  is no longer needed anyway."

Identified-by: Ivan Kokshaysky <>
Tested-by: Thomas Meyer <>
Acked-by: Gary Hade <>
Acked-by: Ingo Molnar <>
Cc: Stefan Richter <>
Signed-off-by: Linus Torvalds <>
15 years agopnpacpi: reduce printk severity for "pnpacpi: exceeded the max number of ..."
Len Brown [Wed, 26 Mar 2008 17:29:32 +0000 (13:29 -0400)]
pnpacpi: reduce printk severity for "pnpacpi: exceeded the max number of ..."

We have been printing these messages at KERN_ERR since 2.6.24,

But KERN_ERR pops up on a console booted with "quiet"
and causes users to get alarmed and file bugs
about the message itself:

So reduce the severity of these messages to
KERN_WARNING, which is not printed by "quiet".

This message will still be seen without "quiet",
but a lot of messages are printed in that mode
and it will be less likely to cause undue alarm.

We could go all the way to KERN_DEBUG, but this
is a real warning after all, so it seems prudent
not to require "debug" to see it.

Signed-off-by: Len Brown <>
15 years agoslab: fix cache_cache bootstrap in kmem_cache_init()
Daniel Yeisley [Tue, 25 Mar 2008 21:59:08 +0000 (23:59 +0200)]
slab: fix cache_cache bootstrap in kmem_cache_init()

Commit 556a169dab38b5100df6f4a45b655dddd3db94c1 ("slab: fix bootstrap on
memoryless node") introduced bootstrap-time cache_cache list3s for all nodes
but forgot that initkmem_list3 needs to be accessed by [somevalue + node]. This
patch fixes list_add() corruption in mm/slab.c seen on the ES7000.

Cc: Mel Gorman <>
Cc: Olaf Hering <>
Cc: Christoph Lameter <>
Signed-off-by: Dan Yeisley <>
Signed-off-by: Pekka Enberg <>
Signed-off-by: Christoph Lameter <>
15 years agocount_partial() is not used if !SLUB_DEBUG and !CONFIG_SLABINFO
Christoph Lameter [Wed, 19 Mar 2008 20:42:07 +0000 (13:42 -0700)]
count_partial() is not used if !SLUB_DEBUG and !CONFIG_SLABINFO

Avoid warnings about unused functions if neither SLUB_DEBUG nor CONFIG_SLABINFO
is defined. This patch will be reversed when slab defrag is merged since slab
defrag requires count_partial() to determine the fragmentation status of
slab caches.

Signed-off-by: Christoph Lameter <>
15 years ago[SPARC64]: flush_ptrace_access() needs preemption disable.
David S. Miller [Wed, 26 Mar 2008 11:51:12 +0000 (04:51 -0700)]
[SPARC64]: flush_ptrace_access() needs preemption disable.

Based upon a report by Mariusz Kozlowski.

Signed-off-by: David S. Miller <>
15 years ago[SPARC64]: Update defconfig.
David S. Miller [Wed, 26 Mar 2008 11:34:04 +0000 (04:34 -0700)]
[SPARC64]: Update defconfig.

Signed-off-by: David S. Miller <>
15 years ago[SPARC64]: Fix allnoconfig build, ptrace.c missing CONFIG_COMPAT checks.
David S. Miller [Wed, 26 Mar 2008 11:31:50 +0000 (04:31 -0700)]
[SPARC64]: Fix allnoconfig build, ptrace.c missing CONFIG_COMPAT checks.

Signed-off-by: David S. Miller <>
15 years ago[SPARC64]: Fix __get_cpu_var in preemption-enabled area.
David S. Miller [Wed, 26 Mar 2008 11:25:00 +0000 (04:25 -0700)]
[SPARC64]: Fix __get_cpu_var in preemption-enabled area.

Reported by Mariusz Kozlowski.

Signed-off-by: David S. Miller <>
15 years agorelay: set an spd_release() hook for splice
Jens Axboe [Wed, 26 Mar 2008 11:04:09 +0000 (12:04 +0100)]
relay: set an spd_release() hook for splice

relay doesn't reference the pages it adds, however we need a non-NULL
hook or splice_to_pipe() can oops.

Signed-off-by: Jens Axboe <>
15 years agoset relay file can not be read by pread(2)
Lai Jiangshan [Wed, 26 Mar 2008 11:01:28 +0000 (12:01 +0100)]
set relay file can not be read by pread(2)

I found that relay files can be read by pread(2). I fix it,
for relay files are not capable of seeking.

Signed-off-by: Lai Jiangshan <>
Signed-off-by: Jens Axboe <>
15 years ago[ICMP]: Dst entry leak in icmp_send host re-lookup code (v2).
Pavel Emelyanov [Wed, 26 Mar 2008 09:27:09 +0000 (02:27 -0700)]
[ICMP]: Dst entry leak in icmp_send host re-lookup code (v2).

Commit 8b7817f3a959ed99d7443afc12f78a7e1fcc2063 ([IPSEC]: Add ICMP host
relookup support) introduced some dst leaks on error paths: the rt
pointer can be forgotten to be put. Fix it bu going to a proper label.

Found after net namespace's lo refused to unregister :) Many thanks to
Den for valuable help during debugging.

Herbert pointed out, that xfrm_lookup() will put the rtable in case
of error itself, so the first goto fix is redundant.

Signed-off-by: Pavel Emelyanov <>
Signed-off-by: Denis V. Lunev <>
Signed-off-by: David S. Miller <>
15 years ago[AX25]: Remove obsolete references to BKL from TODO file.
Robert P. J. Day [Wed, 26 Mar 2008 09:14:38 +0000 (02:14 -0700)]
[AX25]: Remove obsolete references to BKL from TODO file.

Given that there are no apparent calls to lock_kernel() or
unlock_kernel() under net/ax25, delete the TODO reference related to

Signed-off-by: Robert P. J. Day <>
Signed-off-by: David S. Miller <>
15 years ago[NET]: Fix multicast device ioctl checks
Patrick McHardy [Wed, 26 Mar 2008 09:12:11 +0000 (02:12 -0700)]
[NET]: Fix multicast device ioctl checks

SIOCADDMULTI/SIOCDELMULTI check whether the driver has a set_multicast_list
method to determine whether it supports multicast. Drivers implementing
secondary unicast support use set_rx_mode however.

Check for both dev->set_multicast_mode and dev->set_rx_mode to determine
multicast capabilities.

Signed-off-by: Patrick McHardy <>
Signed-off-by: David S. Miller <>
15 years ago[SPARC64]: Fix sparse warnings in arch/sparc64/kernel/signal.c
David S. Miller [Wed, 26 Mar 2008 08:52:18 +0000 (01:52 -0700)]
[SPARC64]: Fix sparse warnings in arch/sparc64/kernel/signal.c

Signed-off-by: David S. Miller <>
15 years ago[SPARC64]: Fix most sparse warnings in arch/sparc64/kernel/sys_sparc.c
David S. Miller [Wed, 26 Mar 2008 08:43:29 +0000 (01:43 -0700)]
[SPARC64]: Fix most sparse warnings in arch/sparc64/kernel/sys_sparc.c

Sparse still doesn't like the funny cast we make from a scalar to a
"union semun" (which is correct by the C language and in particular
works with the sparc64 calling conventions, but sparse doesn't grok
that yet).

Signed-off-by: David S. Miller <>
15 years ago[SPARC64]: Fix sparse warnings in arch/sparc64/kernel/time.c
David S. Miller [Wed, 26 Mar 2008 08:11:55 +0000 (01:11 -0700)]
[SPARC64]: Fix sparse warnings in arch/sparc64/kernel/time.c

Signed-off-by: David S. Miller <>
15 years ago[IRDA]: Store irnet_socket termios properly.
David S. Miller [Wed, 26 Mar 2008 07:55:50 +0000 (00:55 -0700)]
[IRDA]: Store irnet_socket termios properly.

It should be a "struct ktermios" not a "struct termios".

Based upon a build warning reported by Stephen Rothwell.

Signed-off-by: David S. Miller <>
15 years ago[SPARC64]: Fix sparse warnings in arch/sparc64/kernel/ptrace.c
David S. Miller [Wed, 26 Mar 2008 07:46:21 +0000 (00:46 -0700)]
[SPARC64]: Fix sparse warnings in arch/sparc64/kernel/ptrace.c

Signed-off-by: David S. Miller <>
15 years ago[SPARC64]: Fix sparse warnings in arch/sparc64/kernel/irq.c
David S. Miller [Wed, 26 Mar 2008 07:37:51 +0000 (00:37 -0700)]
[SPARC64]: Fix sparse warnings in arch/sparc64/kernel/irq.c

Signed-off-by: David S. Miller <>
15 years agoNOHZ: reevaluate idle sleep length after add_timer_on()
Thomas Gleixner [Sat, 22 Mar 2008 08:20:24 +0000 (09:20 +0100)]
NOHZ: reevaluate idle sleep length after add_timer_on()

add_timer_on() can add a timer on a CPU which is currently in a long
idle sleep, but the timer wheel is not reevaluated by the nohz code on
that CPU. So a timer can be delayed for quite a long time. This
triggered a false positive in the clocksource watchdog code.

To avoid this we need to wake up the idle CPU and enforce the
reevaluation of the timer wheel for the next timer event.

Add a function, which checks a given CPU for idle state, marks the
idle task with NEED_RESCHED and sends a reschedule IPI to notify the
other CPU of the change in the timer wheel.

Call this function from add_timer_on().

Signed-off-by: Thomas Gleixner <>
Acked-by: Peter Zijlstra <>
Acked-by: Ingo Molnar <>
 include/linux/sched.h |    6 ++++++
 kernel/sched.c        |   43 +++++++++++++++++++++++++++++++++++++++++++
 kernel/timer.c        |   10 +++++++++-
 3 files changed, 58 insertions(+), 1 deletion(-)