Alan Stern [Sat, 16 Aug 2003 06:28:53 +0000 (01:28 -0500)]
[PATCH] PATCH: (as70b) Update request_bufflen to match this_count
This patch addresses a problem in both sd.c and sr.c. When a read/write
command is initialized, the routines may reduce this_count (the number of
sectors to transfer) if it exceeds the maximum allowed value (i.e., 0xffff
for READ(10)). However, the code does not similarly alter
scmd->request_bufflen and scmd->bufflen to match the change in the CDB
value.
scmd->request_bufflen is important for the usb-storage driver, which
requires that it be exactly equal to the number of bytes transferred.
scmd->bufflen is used in the rw_intr() routines, where it is passed to
scsi_io_completion() as the number of sectors transferred if no errors
occur.
Another small change in the patch concerns the code in sr.c that checks
whether the total of the scatter-gather area lengths matches
scmd->request_bufflen. If they don't match, the patch bumps the kernel
log message level up to KERN_ERR, and it takes the more conservative
approach of adjusting scmd->request_bufflen only if the s-g length is
smaller than the request length.
James Bottomley [Sat, 16 Aug 2003 05:10:23 +0000 (00:10 -0500)]
ips 3/4: use pci_dma APIs and remove GFP abuse
From: David Jeffery <david_jeffery@adaptec.com>
(with minor reject fixes)
This patch removes several places where we were using kmalloc flag
tricks to always get memory <4GB instead of using the proper
dma_alloc_consistent() API. It also no longer #errors on when compiled
for x86-64 kernels.
James Bottomley [Sat, 16 Aug 2003 05:01:08 +0000 (00:01 -0500)]
ips 2/4: 2.4 resync
From: David Jeffery <david_jeffery@adaptec.com>
(with minor fixes for rejects)
This patch is a resync with the 6.10 driver for 2.4 and updates the 2.4
compatability code. It adds a new wrapper function for differences
between the 2.4 and 2.6 scsi proc interface, forces pci posting in 3
places, corrects using a meaningless constant of 0x80 to 0, and syncs
comments that had changed.
James Bottomley [Sat, 16 Aug 2003 04:55:13 +0000 (23:55 -0500)]
ips 1/4: lindent ips.c
From: David Jeffery <david_jeffery@adaptec.com>
(with fix ups for rejections on CONFIG_HIGHIO)
This patch has no code changes. It is only the result of running
scripts/Lindent on drivers/scsi/ips.c in test3. Rather than use this
patch, it may be advisable to just run
sh scripts/Lindent drivers/scsi/ips.c
The nasty 3-4 space indenting in ips.c has always made it a pain to
read. The remaining patches in this patch set all assume ips.c has been
lindented.
Anton Blanchard [Sat, 16 Aug 2003 04:00:01 +0000 (23:00 -0500)]
[PATCH] another fix to sym2 hotplug conversion
In sym_attach we call sym_hcb_attach. If it fails we call
sym_free_resources which will call sym_hcb_free. Unfortunately
sym_hcb_attach also calls sym_hcb_free on failure.
This results in a bunch of things being freed twice and it looks like
the sym2 memory allocator adds them to the freelist twice. Sometime later
on we allocate the memory twice, with weird consequences.
James Bottomley [Fri, 15 Aug 2003 13:01:32 +0000 (08:01 -0500)]
oops in sd_shutdown
From: Andries Brouwer <aebr@win.tue.nl>
I see an Oops in the SCSI code, caused by the fact that sdkp is NULL
in sd_shutdown. "How can that be?", you will ask - dev->driver_data was set
in sd_probe. But in my case sd_probe never finished. An insmod usb-storage
hangs forever, or at least for more than six hours, giving ample opportunity
to observe this race between sd_probe and sd_shutdown.
(Of course sd_probe hangs in sd_revalidate disk.)
Perhaps the obvious test is a good idea.
Locking seems meaningless - sd_probe will never finish.
Driver Core: add warnings if .release functions are not set for objects.
This has been in the -mm tree for a while and has helped a lot in finding
lots of improper users of the driver core. It also moves the driver core
code up quite a few levels on the "Rusty's guide to kernel APIs".
David Brownell [Fri, 15 Aug 2003 03:01:55 +0000 (20:01 -0700)]
[PATCH] USB: usb_start_wait_urb() rewrite
The code that manges the synchronous control/bulk calls has
been a mess for ages. This patch rewrites it using:
- "struct completion" instead of a usb-internal clone therof,
- prepare_to_wait()/finish_wait() instead of the tangled
mess it now uses (or a new wait_event_timeout call, as in
previous versions of this patch).
Dave Jones [Fri, 15 Aug 2003 15:31:32 +0000 (16:31 +0100)]
[AGPGART] Move ATI PCI IDs to pci_ids.h
- sort some of the ATI entries. (note, there are dupes in there
that could be fixed up at some point).
- Rename PCI_DEVICE_ID_RADEON_IGP to ATI_RS100.
RadeonIGP is the family, not the specific chip.
Andrew Morton [Thu, 14 Aug 2003 18:31:12 +0000 (11:31 -0700)]
[PATCH] AS: update as_requeue_request()
- Ensure that arq->state is always set (ie. even if io context
allocation failed).
- Call as_antic_stop() unconditionally - which checks for the same
condition. There are other callers which make the same check and should
be changed too...
Ingo Molnar [Thu, 14 Aug 2003 18:26:03 +0000 (11:26 -0700)]
[PATCH] More timer race fixes
Patch from Julie DeWandel.
This patch has solved the crashes observed during TPC-C runs on the
16-way box. (I'm confident it will fix the other reported cases as
well.)
The race is the setting of timer->base to NULL, by del_timer() or
__run_timers(). If new_base == old_base in __mod_timer() then we do not
re-check timer->base after getting the lock. (the only case where we do
not have to re-check the base is in the !old_base case, but the else
branch also includes the old_base==new_base case.)
The __run_timers() case made the lock_timer() patch not work fully - we
cannot use lock_timer() in __run_timers() due to lock ordering.
Andrew Morton [Thu, 14 Aug 2003 17:25:29 +0000 (10:25 -0700)]
[PATCH] SELinux inode security init
From: Stephen Smalley <sds@epoch.ncsc.mil>
This patch reworks the SELinux module code that handles inodes initialized
before the policy is initially loaded to also cover the case where a pseudo
filesystem such as selinuxfs or nfsd directly populate themselves.
The list of inode security structures is split into per-superblock lists
associated with each superblock security structure, and the initialization
is performed by superblock_doinit.
Andrew Morton [Thu, 14 Aug 2003 17:25:14 +0000 (10:25 -0700)]
[PATCH] Docbook: Make mandocs output more terse
From: Michael Still <mikal@stillhq.com>
This patch takes into account requests from various LKML members for the
mandocs output to be more terse. Information about the copyright, and
formatting of the man page is moved into a comment at the start of the
groff output.
Sample output can be found at:
http://www.stillhq.com/linux/mandocs/2.6.0-test3-bk1/
Andrew Morton [Thu, 14 Aug 2003 17:24:59 +0000 (10:24 -0700)]
[PATCH] Use mark_page_accessed() in follow_page()
Touching a page via follow_page() counts as a reference so we should be
either setting the referenced bit in the pte or running mark_page_accessed().
Altering the pte is tricky because we haven't implemented an atomic
pte_mkyoung(). And mark_page_accessed() is better anyway because it has more
aging state: it can move the page onto the active list.
Andrew Morton [Thu, 14 Aug 2003 17:24:35 +0000 (10:24 -0700)]
[PATCH] bugfix for initialization bug in adm1021 driver
From: Rusty Lynch <rusty@linux.co.intel.com>
While initializing the adm1021 device, the driver is performing a conversion
from fixed point to Celcius on values that were declaired as Celcius. On my
Dell Precision 220 this results in a shutdown after a couple of minutes
running.
Andrew Morton [Thu, 14 Aug 2003 17:24:28 +0000 (10:24 -0700)]
[PATCH] Better argument size tracking in fs/exec.c
From: Matthew Wilcox <willy@debian.org>
Introduce a new variable "arg_size" and set it appropriately in each arm of
the CONFIG_STACK_GROWSUP. This patch fixes a bug for PA-RISC and makes the
code cleaner for everyone.
Andrew Morton [Thu, 14 Aug 2003 17:23:58 +0000 (10:23 -0700)]
[PATCH] Make 16-way x440's boot
From: Matthew Dobson <colpatch@us.ibm.com>
16 proc x440 boxen aren't booting mainline kernels right now for many valid
configs. This patch makes sure NUMA codepaths aren't executed for SMP
configs. It also adds some sane error messages to the code, and cleans up
some #ifdefs.
Andrew Morton [Thu, 14 Aug 2003 17:23:22 +0000 (10:23 -0700)]
[PATCH] ipmi_kcs_intf.c compile warning
From: Zwane Mwaikambo <zwane@linuxpower.ca>
drivers/char/ipmi/ipmi_kcs_intf.c: In function `acpi_find_bmc':
drivers/char/ipmi/ipmi_kcs_intf.c:1088: warning: long unsigned int format, different type arg (arg 2)
drivers/char/ipmi/ipmi_kcs_intf.c:1088: warning: long unsigned int format, different type arg (arg 2)
Andrew Morton [Thu, 14 Aug 2003 17:23:06 +0000 (10:23 -0700)]
[PATCH] keyboard.c warning fix
drivers/char/keyboard.c: In function `k_fn':
drivers/char/keyboard.c:665: warning: comparison is always true due
to limited range of data type
I didn't want to just delete the code because one day the size of func_table
may get smaller, or the type of `value' may get larger. When that happens,
the test becomes valid again.
Andrew Morton [Thu, 14 Aug 2003 17:22:44 +0000 (10:22 -0700)]
[PATCH] request_firmware fix
From: Manuel Estrada Sainz <ranty@debian.org>
- undo recent change, made in the believe that "buffer" was the size of
the whole file, it is just PAGE_SIZE in size. This was causing kernel
memory corruption.
- Since files are allowed to have unknown sizes, by setting their
size to 0, we can't preallocate a buffer of their size on open.
- Adapt request_firmware() to the sysfs change.
- Adapt drivers/pci/pci-sysfs.c to the sysfs change.
Andrew Morton [Thu, 14 Aug 2003 17:22:37 +0000 (10:22 -0700)]
[PATCH] loop oops fix
loop-on-file oopses during unmount. This is because lo_queue is now freed
during lo_ioctl(LOOP_CLR_FD). I think the scenario is:
1: umount(8) opens /dev/loop0
2: umount(8) runs lo_ioctl(LOOP_CLR_FD) (this frees the queue)
3: umount(8) closes the /dev/loop0 handle. The blockdev layer syncs the
blockdev, but its mapping->backing_dev_info now points into la-la-land.
We shouldn't be freeing the queue until all refs to it have gone away. This
patch gives the queue the same lifetime as the controlling loop_device
itself. It also makes the loop driver's queue appear in sysfs again.
It would be better to free the queue when the device is not in use, but I'm
not sure how we can hook into the blockdev layer to do that.
Andrew Morton [Thu, 14 Aug 2003 17:22:18 +0000 (10:22 -0700)]
[PATCH] fix hugetlbfs slab corruption on umount
From: Zwane Mwaikambo <zwane@linuxpower.ca>
hugetlbfs was accessing super_block->s_fs_info after free'ing it. This was
because it was being free'd prematurely. I have deferred free until
->put_super(). I have also removed hugetlbfs_kill_super since it now is
simply a kill_litter_super.
Andrew Morton [Thu, 14 Aug 2003 17:21:45 +0000 (10:21 -0700)]
[PATCH] Make MTRR init conform with recommended procedure
From: Zwane Mwaikambo <zwane@linuxpower.ca>
This is a patch to make the MTRR initialisation more conformant with what
is stated in volume 3 of (10-36 Memory Cache Control). The most notable
change is entering the no-fill cache mode before clearing the PGE bit in
cr4. Intel also states that we should do the cache flush via the cr3
register shuffle. If there is a problem with the patch please don't
hesitate to beat me vigorously with a clue-by-four.
It has been tested on a 3x Pentium 133, 8x PIII Xeon 700, 1x Celeron 550 and 32x
PIII 500 NUMAQ (hardware courtesy of OSDL)
Andrew Morton [Thu, 14 Aug 2003 17:21:10 +0000 (10:21 -0700)]
[PATCH] _devfs_walk_path fix
From: Andrey Borzenkov <arvidjaar@mail.ru>
_devfs_walk_path does not check if de it is about to scan is a directory.
Next step is spinlock on non-spinlock memory. It requires either artificial
setup or really broken driver but fairly easy to reproduce once you know how.