- 21 Nov, 2004 24 commits
-
-
Benjamin Herrenschmidt authored
We just spent some days fighting a rare race in one of the distro's who backported some of timer.c from 2.6 to 2.4 (though they missed a bit). The actual race we found didn't happen in 2.6 _but_ code inspection showed that a similar race is still present in 2.6, explanation below: Code removing a timer from a list (run_timers or del_timer) takes that CPU list lock, does list_del, then timer->base = NULL. It is mandatory that this timer->base = NULL is visible to other CPUs only after the list_del() is complete. If not, then mod timer could see it NULL, thus take it's own CPU list lock and not the one for the CPU the timer was beeing removed from the list, and thus the list_add in mod_timer() could race with the list_del() from run_timers() or del_timer(). Our race happened with run_timers(), which _DOES_ contain a proper smp_wmb() in the right spot in 2.6, but didn't in the "backport" we were fighting with. However, del_timer() doesn't have such a barrier, and thus is subject to this race in 2.6 as well. This patch fixes it. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Benjamin Herrenschmidt authored
The "udbg" code used on ppc64 for early consoles including early serial console recently got a new "default speed" option. This was implemented as a switch case that missed a few important cases, one beeing necessary for a board beeing released soon. This patch fixes it by using the proper division to calculate the dll value for the uart instead of that bogus switch/case. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Benjamin Herrenschmidt authored
The pci_bus_to_host() inline function used on ppc64 to find the pci_contoller structure a give pci_bus resides on used to contain bogus tree walking code, which fortunately ended up never beeing necessary since "sysdata" always points to a device_node structure that has the proper "phb" field (even if it is not the device-node of the actual P2P, which happens during boot). Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Benjamin Herrenschmidt authored
This patch fixes a typo in the code that parse Open Firmware properties for devices under an "isa" node, the incorrect struct size was used when parsing the "reg" property of these. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Benjamin Herrenschmidt authored
The ppc64 kernel can be built with a default command line (CONFIG_CMDLINE) for cases where none is provided by the firmware. However, some OF implementation always pass a "bootargs" property that only contains the "0" terminating byte of a C string which caused us to think there was a command line, and not use the built-in one. This patch fixes it. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Antonino Daplas authored
third argument in module_param is the sysfs permission not a default value. This fixes things for rivafb in 2.6.10-rc2: Signed-Off-By: Guido Guenther <agx@sigxcpu.org> Signed-off-by: Antonino Daplas <adaplas@pol.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Antonino Daplas authored
From Guido Guenther <agx@sigxcpu.org> this patch against 2.6.10-rc2 finally detects rivafb on NV30 based power books by adding the pciid. Wolfram Quester tested it and reported it working. It also cleans up the error code reported from the probe function. From Antonino Daplas <adaplas@pol.net> - do not validate mode if monitor specifications are not available Signed-Off-By: Guido Guenther <agx@sigxcpu.org> Signed-off-by: Antonino Daplas <adaplas@pol.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Antonino Daplas authored
- Do a set_par very late instead of during fbcon_blank by setting the FBINFO_MISC_MODESWITCHLATE flag which should help prevent lockups when switching from X - Shorten chipset names that were missed before - Do not validate modeline if monitor specifications are not available Signed-off-by: Antonino Daplas <adaplas@pol.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Antonino Daplas authored
This patch fixes the screen corruption resulting from neofb cleanup. Signed-off-by: Antonino Daplas <adaplas@pol.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
ChangeSet "adaplas: [PATCH] fbdev: Add __iomem annotations to hgafb" had actually broken it - it not only added a (useless) cast in rowaddr(), it had also added a dereferencing. Since it is video memory and since we do memory transfers on the resulting "address"... IOW, it's even exploitable - not that there had been a lot of HGA boxen out there, but... This restores the intended behaviour. Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
missing __user annotations + removal of gratitious casts in LHS of assignments. Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
direct dereferencing of iomem pointer. [not sure who maintains that one, so no Cc] Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
direct dereferencing of ioremapped memory. Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
64bit portability fixes - as it is, driver had been broken on all 64bit platforms except alpha. Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
- 20 Nov, 2004 16 commits
-
-
bk://bk.arm.linux.org.uk/linux-2.6-pcmciaLinus Torvalds authored
into ppc970.osdl.org:/home/torvalds/v2.6/linux
-
Michal Rokos authored
Patch from Michal Rokos proc_pccard is declared twice, so remove the first declaration such that it is only in ifdef CONFIG_PROC_FS block. Signed-off-by: Russell King <rmk@arm.linux.org.uk>
-
Adrian Bunk authored
Patch from Adrian Bunk Since there's no user outside this file, cardbus_type in drivers/pcmcia/yenta_socket.c can be made static. Signed-off-by: Adrian Bunk Signed-off-by: Russell King
-
Maximilian Attems authored
Use msleep() instead of schedule_timeout() to guarantee the task delays as expected. Signed-off-by: Nishanth Aravamudan Signed-off-by: Maximilian Attems Signed-off-by: Russell King <rmk@arm.linux.org.uk>
-
Alexander Kern authored
usb_early_handoff is referenced from __devinit and hence should be __devinitdata. Acked-by: Greg Kroah-Hartman <greg@kroah.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andreas Gruenbacher authored
here is a fix to a previous ChangeSet from John; 32-bit emulation of flock(fd, F_GETLK, &lock) currently is broken. The ChangeSet: http://linux.bkbits.net:8080/linux-2.5/cset%404152257aJKu1UClRcfvhsK6IjGYSeQ?nav=index.html|ChangeSet@-12w from John Engel <jhe@us.ibm.com> fixes an off-by-one error and according to the ChangeSet comment, it also contains a fix to handle l_len < 0 which is now defined in POSIX 1003.1-2001 from the fcntl man page. Gordon Jin <gordon.jin@intel.com> reports that the added test causes compat_sys_fcntl[64] to fail: If fcntl(fd, F_GETLK, &lock) finds no conflicting lock it sets l_whence to F_UNLCK, leaves all the other fields unchanged, and returns 0. The (f.l_start < 0) test wrongly converts this to an EINVAL result. The underlying sys_fcntl function which compat_sys_fcntl and compat_sys_fcntl64 invoke already handles POSIX behavior correctly. The additional tests in the compat wrappers are not needed. Here is a test case; its expected result is: PASS get flock: l_type=1, l_whence=0, l_start=145, l_len=10 #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> #include <stdio.h> int main(int argc, char *argv[]) { int fd; struct flock fl; char buf[255]; fl.l_type = F_WRLCK; fl.l_whence = SEEK_END; fl.l_start = -100; fl.l_len = -10; /* fl.l_whence = SEEK_SET; fl.l_start = 100; fl.l_len = 10; */ switch(fork()) { case -1: perror("fork"); exit(-1); case 0: fd = open("/tmp/testfile", O_RDWR|O_CREAT, 0600); if (fd == -1) { perror("open"); exit(-1); } if (write(fd, buf, 255) == -1) { perror("write"); exit(-1); } if (fcntl(fd, F_SETLK, &fl) == -1) { perror("F_SETLK"); exit(-1); } sleep(2); break; default: sleep(1); fd = open("/tmp/testfile", O_RDWR|O_CREAT, 0600); if (fd == -1) { perror("open"); exit(-1); } if (fcntl(fd, F_SETLK, &fl) != -1 || errno != EAGAIN) { perror("F_SETLK"); exit(1); } fl.l_type = F_WRLCK; /* fl.l_whence = SEEK_SET; fl.l_start = 0; fl.l_len = 0; */ if (fcntl(fd, F_GETLK, &fl) == -1) { perror("F_GETLK"); printf("FAIL\n"); exit(-1); } printf("PASS\n"); printf("get flock: l_type=%d, l_whence=%d, l_start=%zd, " "l_len=%zd\n", fl.l_type, fl.l_whence, (size_t) fl.l_start, (size_t) fl.l_len); break; } exit(0); } Signed-off-by: Andreas Gruenbacher <agruen@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Andrew Morton authored
We ended up adding this patch twice. Cc: <ak@muc.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
* s_4bri.c has a nasty typo - bogus & in qBri_cpu_trapped(). We have void *base; followed by regs[0] = READ_DWORD((&base + offset) + 0x70); which is *NOT* what is meant there - instead of access to memory pointed to by base we get access to _stack_ at some offset from the place where the local variable base lives. Signed-off-by: Armin Schindler <armin@melware.de> Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
* new helpers - READ_BYTE() and WRITE_BYTE(). On Linux they are needed, since direct access to iomem pointers is not allowed (and does not work on some architectures). * memcpy() to/from iomem is not allowed on Linux (same story). Proper primitives are memcpy_toio() and memcpy_fromio(). Several places misused memcpy(); switched to memcpy_{to,from}io(). Signed-off-by: Armin Schindler <armin@melware.de> Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
* added __iomem to declarations of iomem pointers Signed-off-by: Armin Schindler <armin@melware.de> Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
* adds new helpers ({GET,PUT}_{WORD,DWORD}) parallel to READ_WORD et.al., but used on normal memory instead of iomem. Instances of READ_WORD and friends that are applied to vmalloc'ed memory and local variables switched to new helpers. Signed-off-by: Armin Schindler <armin@melware.de> Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
trivial iomem annotations Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
fixed leaks on failure exits in ->probe()
-
Alexander Viro authored
assorted 64bit issues - extraction of number passed in pointer, use of %zd for size_t, ssize_t instead of int as return value of ->read(), %p for pointers instead of casting to int and using %x. Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
partially annotated Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-
Alexander Viro authored
Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-