We cannot always rely on ->biotail remaining untouched. Currently we
leak all the pinned user pages when doing cdda ripping at least, so I
see no way around keeping the bio pointer seperate and passing it back
in for unmap. Alternatively, we could invent a struct blk_map_data and
put it on the stack for passing to both map and unmap.
Dave Kleikamp [Tue, 27 Apr 2004 04:04:53 +0000 (23:04 -0500)]
JFS: Fix non-ascii file name problem
An unintentional sign extention caused non-ascii characters to be
stored incorrectly, leading to inaccessible files. Changing a
declaration to unsigned char fixes the problem.
Andrew Morton [Mon, 26 Apr 2004 16:16:34 +0000 (09:16 -0700)]
[PATCH] kbuild: Improved external module support
From: Sam Ravnborg <sam@ravnborg.org>
The external module support recently introduced caused a number of problems:
- To build an external module the Module.symvers file was needed
- To create the Module.symvers file a module was required
- If Module.symvers was missing kbuild boiled out with an error
- If vmlinux was missing also the stage 2 of module build failed (make -k)
- It was not documented what was needed to actually bauild a module
The following patch addresses this by adding the following functionality:
- Always generate the Module.symvers file
- Ignore a missing Module.symvers file
- Add a new target modules_prepare, it prepares the kernel for building
external modules, and is also usefull with O=
- And it adds some more comments to Makefile.modpost, so others may follow
it with some luck
- .modpost.cmd is no longer generated
This should close all reports on issues with respect to building external
modules with current kernel - which has been identified as kernel problems.
Andrew Morton [Mon, 26 Apr 2004 16:04:25 +0000 (09:04 -0700)]
[PATCH] SELinux ptrace race fix
From: Stephen Smalley <sds@epoch.ncsc.mil>
Looking again at the SELinux ptrace check, I believe that there is an
unrelated race due to the fact that the parent link is only updated after
releasing the task lock in ptrace_attach (and this is necessary as task lock
doesn't nest with write lock of tasklist_lock).
The patch below changes SELinux to save the tracing process' SID upon a
successful selinux_ptrace hook call and then use that SID in the ptrace check
in apply_creds in order to avoid such races. This allows us to preserve the
fine-grained process-to-process ptrace check upon exec (vs. the global
CAP_SYS_PTRACE privilege => PT_PTRACE_CAP flag used by the capability module)
while still avoiding races.
Andrew Morton [Mon, 26 Apr 2004 16:04:06 +0000 (09:04 -0700)]
[PATCH] SubmittingPatches diffing update.
From: Zwane Mwaikambo <zwane@arm.linux.org.uk>
A kernel janitor recently got confused by the advice in SubmittingPatches
and was sending patches with the wrong strip level, i think just about
everyone would prefer standard patches. Also mention various patch
management scripts for batching up large deltas.
Andrew Morton [Mon, 26 Apr 2004 16:03:56 +0000 (09:03 -0700)]
[PATCH] Set module license in mcheck/non-fatal.c
From: Herbert Xu <herbert@gondor.apana.org.au>
This patch sets the module license for mcheck/non-fatal.c. The module
doesn't work at all without this as one of the symbols it needs is only
exported as GPL.
The partportbook is licensed under the GFDL and Linus agreed to remove
all GFDL licensed files in
http://www.ussg.iu.edu/hypermail/linux/kernel/0306.1/1968.html.
I pinged the author the first time on the 2nd of april but still didn't get
a reply, then send a patch to Linus to remove it last week but linus
ignored it. Here's the patch again:
Andrew Morton [Mon, 26 Apr 2004 16:02:54 +0000 (09:02 -0700)]
[PATCH] fs/proc/array.c: workaround for gcc-2.96
From: Alan Stern <stern@rowland.harvard.edu>
This patch is needed to work around gcc-2.96's limited ability to cope with
long long intermediate expression types. I don't know why the code
compiled okay earlier and failed now.
Andrew Morton [Mon, 26 Apr 2004 16:02:25 +0000 (09:02 -0700)]
[PATCH] ISDN Eicon driver: remove call to trap usermode helper
From: Armin Schindler <armin@melware.de>
This patch removes the function to call a usermode helper if the hardware
and its firmware has a problem. This feature is already implemented in the
user utility and the driver does not need to care about it.
Andrew Morton [Mon, 26 Apr 2004 16:02:14 +0000 (09:02 -0700)]
[PATCH] hugepage fixes
From: William Lee Irwin III <wli@holomorphy.com>
mm/hugetlb.c is putting the destructor in head->lru.prev not head[1].mapping;
fix below along with nuking huge_page_release(), which simply duplicates
put_page().
Andrew Morton [Mon, 26 Apr 2004 16:01:44 +0000 (09:01 -0700)]
[PATCH] slab: use order 0 for vfs caches
We have interesting deadlocks when slab decides to use order-1 allocations for
ext3_inode_cache. This is because ext3_alloc_inode() needs to perform a
GFP_NOFS 1-order allocation.
Sometimes the 1-order allocation needs to free a huge number of pages (tens of
megabytes) before a 1-order grouping becomes available. But the GFP_NOFS
allocator cannot free dcache (and hence icache) due to the deadlock problems
identified in shrink_dcache_memory().
So change slab so that it will force 0-order allocations for shrinkable VFS
objects. We can handle those OK.
Andrew Morton [Mon, 26 Apr 2004 16:00:52 +0000 (09:00 -0700)]
[PATCH] s390: no timer interrupts in idle.
From: Martin Schwidefsky <schwidefsky@de.ibm.com>
This patch add a system control that allows to switch off the jiffies timer
interrupts while a cpu sleeps in idle. This is useful for a system running
with virtual cpus under z/VM.
Andrew Morton [Mon, 26 Apr 2004 16:00:41 +0000 (09:00 -0700)]
[PATCH] efibootmgr location change
From: Matt Domsch <Matt_Domsch@dell.com>
I moved the home of the efibootmgr utility from domsch.com to
linux.dell.com. Note the move in drivers/firmware/Kconfig, also note
version 0.5.0-test3 or above is necessary.
Andrew Morton [Mon, 26 Apr 2004 16:00:32 +0000 (09:00 -0700)]
[PATCH] efivars fixes
From: Matt Domsch <Matt_Domsch@dell.com>
Patch below fixes three small bugs in efivars.c as posted by Matt Tolentino
last week and included in the latest -mm. Aside from this small patch, I'm
quite pleased with Matt T's work, thanks!
- dummy() used for reading write-only sysfs files should return -ENODEV to
indicate failure, not 0.
- efivar_create() should return the number of bytes written on success, not
zero.
- efivar_delete() should return the number of bytes written on success, not
zero.
Andrew Morton [Mon, 26 Apr 2004 16:00:00 +0000 (09:00 -0700)]
[PATCH] efivars: remove from arch/ia64
From: Matt Tolentino <metolent@snoqualmie.dp.intel.com>
I broke up the efivars driver update patch I had sent out quite a while ago
into several smaller patches. This includes several fixes and suggestions
that were pointed out. The patches are broken down as follows:
1 - remove all traces of efivars from arch/ia64/
2 - add new sysfs based efivars driver into
drivers/firmware with accompanying Kconfig/Makefile
changes to make it fully functional for ia64 again.
3 - cleans up x86 references to the /proc version of
the efivars driver.
Andrew Morton [Mon, 26 Apr 2004 15:59:12 +0000 (08:59 -0700)]
[PATCH] slab alignment fixes
From: Manfred Spraul <manfred@colorfullife.com>
Below is a patch that redefines the kmem_cache_alloc `align' argument:
- align not zero: use the specified alignment. I think values smaller than
sizeof(void*) will work, even on archs with strict alignment requirement (or
at least: slab shouldn't crash. Obviously the user must handle the
alignment properly).
- align zero:
* debug on: align to sizeof(void*)
* debug off, SLAB_HWCACHE_ALIGN clear: align to sizeof(void*)
* debug off, SLAB_HWCACHE_ALIGN set: align to the smaller of
- cache_line_size()
- the object size, rounded up to the next power of two.
Slab never honored cache align for tiny objects: otherwise the 32-byte
kmalloc objects would use 128 byte objects.
There is one additional point: right now slab uses ints for the bufctls.
Using short would save two bytes for each object. Initially I had used short,
but davem objected. IIRC because some archs do not handle short efficiently.
Should I allow arch overrides for the bufctls? On i386, saving two bytes
might allow a few additional anon_vma objects in each page.
Andrew Morton [Mon, 26 Apr 2004 15:58:38 +0000 (08:58 -0700)]
[PATCH] ppc64: Move Initrd
From: Rusty Russell <rusty@rustcorp.com.au>
This patch moves the initrd when "make_room" runs out of space, rather than
stepping over it. The problem with stepping over it is that it gets copied
with the kernel when this happens, which wastes space.
Also ensures that the initrd isn't where the kernel wants to be moved to: if
it is, it gets moved out the way.
Andrew Morton [Mon, 26 Apr 2004 15:58:17 +0000 (08:58 -0700)]
[PATCH] ppc64: Clean up prom functions in prom.c
From: Rusty Russell <rusty@rustcorp.com.au>
1) Define PROM_ERROR: checks for call_prom() < 0 are bogus (returns ulong)
2) All OF access functions should be marked __init.
3) prom_strtoul isn't used at all.
Andrew Morton [Mon, 26 Apr 2004 15:57:56 +0000 (08:57 -0700)]
[PATCH] ppc64: make_room macro for ppc64 prom.c
From: Rusty Russell <rusty@rustcorp.com.au>
copy_device_tree calls inspect_node() which recurses to copy the Open Firmware
device tree. It just copied into memory above the kernel for about 8MB, which
can overwrite the initrd, and/or get truncated on big machines.
The real solution is to allocate memory properly for all the prom_init memory
users. However, that's quite a change. This patch introduces a "make_room"
macro which inspect_node uses to get memory. This does the same as before,
except skips over the initrd if neccessary.
Andrew Morton [Mon, 26 Apr 2004 15:57:46 +0000 (08:57 -0700)]
[PATCH] ppc64: Make finish_device_tree use lmb_alloc, not klimit
From: Rusty Russell <rusty@rustcorp.com.au>
finish_device_tree simply allocates nodes by incrementing klimit (ie. using
memory on top of the kernel). Change it to figure out how much memory it
needs, then use lmb_alloc to allocate that, then fill it in.
This gets rid of the only manipulation of klimit after prom_init.
Andrew Morton [Mon, 26 Apr 2004 15:56:53 +0000 (08:56 -0700)]
[PATCH] ppc64: Split prom.c Into pre-reloc and post-reloc Functions
From: Rusty Russell <rusty@rustcorp.com.au>
Move all the functions that run normally (ie. with the kernel in the correct
address) to the bottom of prom.c, and keep all the functions which use RELOC()
to the top, above "prom_init()" which calls them.
Also, make prom_initialize_dart_table and prom_initialize_tce_table static.
Andrew Morton [Mon, 26 Apr 2004 15:56:22 +0000 (08:56 -0700)]
[PATCH] Per-sb dquot dirty lists
From: Jan Kara <jack@ucw.cz>
When there are lots of dirty dquots the vfs_quota_sync() is too slow (it has
O(N^2) behaviour). Attached patch implements list of dirty dquots for each
superblock and quota type. Using this lists sync is trivially linear.
Attached patch is against 2.6.5 with journalled quota and previous patch for
hash table size.
(Jan had a test which went from 8 minutes to 0.8 seconds...)
Andrew Morton [Mon, 26 Apr 2004 15:56:11 +0000 (08:56 -0700)]
[PATCH] Bigger quota hashtable
From: Jan Kara <jack@ucw.cz>
I found out that quota uses hash table with just 43 entries to hash dquot
entries. I guess that we can afford using one page for that
(quotactl(Q_GETQUOTA...), got faster like 3x for 4000 users). Attached patch
implements that.
Andrew Morton [Mon, 26 Apr 2004 15:56:01 +0000 (08:56 -0700)]
[PATCH] ext3 journalled quota locking fix
From: Jan Kara <jack@ucw.cz>
I've attached a fix for a problem in ext3 journalled quota patch - the problem
is that detecting whether dqput() sleeps was wrong and so we could possibly
schedule when holding a spinlock.
Andrew Morton [Mon, 26 Apr 2004 15:55:51 +0000 (08:55 -0700)]
[PATCH] credentials locking fix
From: Chris Wright <chrisw@osdl.org>
Contributions from:
Stephen Smalley <sds@epoch.ncsc.mil>
Andy Lutomirski <luto@stanford.edu>
During exec the LSM bprm_apply_creds() hooks may tranisition the program to a
new security context (like setuid binaries). The security context of the new
task is dependent on state such as if the task is being ptraced.
ptrace_detach() doesn't take the task_lock() when clearing task->ptrace. So
there is a race possible where a process starts off being ptraced, the
malicious ptracer detaches and if any checks agains task->ptrace are done more
than once, the results are indeterminate.
This patch ensures task_lock() is held while bprm_apply_creds() hooks are
called, keeping it safe against ptrace_attach() races. Additionally, tests
against task->ptrace (and ->fs->count, ->files->count and ->sighand->count all
of which signify potential unsafe resource sharing during a security context
transition) are done only once the results are passed down to hooks, making it
safe against ptrace_detach() races.
Additionally:
- s/must_must_not_trace_exec/unsafe_exec/
- move unsafe_exec() call above security_bprm_apply_creds() call rather than
in call for readability.
- fix dummy hook to honor the case where root is ptracing
- couple minor formatting/spelling fixes
Andrew Morton [Mon, 26 Apr 2004 15:55:31 +0000 (08:55 -0700)]
[PATCH] Use workqueue for call_usermodehelper
From: Rusty Russell <rusty@rustcorp.com.au>
call_usermodehelper uses keventd to create a thread, guaranteeing a nice,
clean kernel thread. Unfortunately, there is a case where
call_usermodehelper is called with &bus->subsys.rwsem held (via
bus_add_driver()), but keventd could be running bus_add_device(), which is
blocked on the same lock. The result is deadlock, and it comes from using
keventd for both.
In this case, it can be fixed by using a completely independent thread for
call_usermodehelper, or an independent workqueue. Workqueues have the
infrastructure we need, so we use one.
Andrew Morton [Mon, 26 Apr 2004 15:55:21 +0000 (08:55 -0700)]
[PATCH] create singlethread_workqueue()
From: Rusty Russell <rusty@rustcorp.com.au>
Workqueues are a great primitive for running things from user context from
a completely clean environment. Unfortunately, they currently insist on
creating one thread per CPU, which is overkill for many situations, so the
more generic keventd workqueue is used for these. Recently deadlocks using
keventd were demonstrated, showing that it is not suitable for all uses.
1) Clean up CPU iterators. Always a nice touch.
2) Add __create_workqueue() and create_singlethread_workqueue(),
keeping source compatibility.
3) Put workqueues in workqueue list even if !CONFIG_HOTPLUG_CPU (means
we need a lock to protect that list). Now we can tell if a wq is
single-threaded using list_empty(&wq->list).
4) For single-threaded workqueues, override CPU in queue_work,
delayed_work_timer_fn and flush_workqueue to be 0. flush_workqueue
now does redundant passes for single-threaded workqueues, but the
code remains simple.
5) Make create_workqueue_thread return the thread, so we can easily
kthread_bind for multi-threaded workqueues.
akpm fixes:
- Fix up is_single_threaded() handling
- single-threaded wq thread does not have "/0" appended.
Michael Chan [Mon, 26 Apr 2004 14:02:26 +0000 (07:02 -0700)]
[TG3]: Fix jimbo frame PHY programming.
1. Added new workaround for 5705 to improve bit error rate.
2. Changed to use read-modify-write to set the extended packet bit in
tg3_phy_reset.
3. Removed some phy setup code in tg3_phy_probe. All of that is already
in the end of tg3_phy_reset. Writing to the phy during probe time may
contend with ASF because ASF is constantly reading phy registers to
determine the link.
4. Removed the write to phy register 0x18 in tg3_phy_copper_begin. Not
sure what it was for and it will overwrite that regsiter.
David Brownell [Mon, 26 Apr 2004 11:51:43 +0000 (04:51 -0700)]
[PATCH] One more USB fix
Here's another fix it'd be good to merge ...
No changes to the Linux code at all, but it'll makes the Windows
configuration of a Linux device running the Ethernet/RNDIS gadget behave
correctly on more versions of Windows. (It might prevent some
Bluescreening too.)
There's an obsolete check in sn_init_pdas() left over from the 2.4
days that panics if the cpu PDA and cpu_data area span more than a page.
With 2.6, we're not limited to a page, so remove the check entirely.
Alex Williamson [Mon, 26 Apr 2004 07:13:52 +0000 (00:13 -0700)]
[PATCH] ia64: bug w/ shared interrupts
I just ran into a bug introduced by the most recent iosapic.c patch.
The scenario is a builtin driver is up and running happily. A module
loads for a devices that happens to share the same interrupt vector,
in this case a network driver. The module calls pci_enable_device()
as it should, which eventually lands in iosapic_enable_intr(). We
then proceed to mask the interrupt and kill the device that's already
running. As a bonus, request_interrupt() doesn't fix the problem
because we only call the startup for the interrupt handler on the
first action attached to the interrupt.
I think the best way out of this is simply to detect when an action is
already attached to a vector and leave it alone. This also prevents
interrupts from moving to other cpus (on boxes w/o irq redirection)
for no good reason.
The logic got a little foo-bar'ed in the last patch, we should have keep
the old logic. Ie LoEj bit (2nd) must always be set, just clear it for
known non-capable of loading drives.
This is an old bug that often confuses people, rightfully.
For some laptop and server type cdroms, the drives advertise themselves
as tray loading even if they are caddy-like or slot-in loaders. This
means they cannot insert the media on their own, and this generates a
5/24/00 error to START_STOP_UNIT.
This prevents the logging of such a failure, and also fixes the
generation of such a bad command in case the mech type was correctly set
by the drive.
Michael Hunold [Mon, 26 Apr 2004 01:53:40 +0000 (18:53 -0700)]
[PATCH] DVB: Misc. DVB USB driver updates
- [DVB] ttusb-dec:
- Add a parameter to dvb_filter_pes2ts function to specify whether
the packet is a payload unit start or not
- Use the hotplug firmware loader for 2.6 kernels instead of
compiling the firmware into the module.
- Correct the USB id of the DEC3000-s, add basic support
Michael Hunold [Mon, 26 Apr 2004 01:53:18 +0000 (18:53 -0700)]
[PATCH] DVB: AV7110 DVB driver updates
- [DVB] av7110 update:
- speed up firmware loading
- follow internal API changes in saa7146 driver
- introduced some symbolic constants for a/v dec cmds
- change default for hw_sections to 0 to enable crc checks
Michael Hunold [Mon, 26 Apr 2004 01:53:08 +0000 (18:53 -0700)]
[PATCH] DVB: Other DVB core updates
- [DVB] remove superflous memset() which caused section data to be
overwritten when a) there are two sections in one TS packet, and b)
the first section was smaller than 18 bytes; thanks to Jean-Claude
Repetto for tracking this down
- [DVB] starting a ts filter on a running section filter's pid did
break the section filter; fixed.
- [DVB] integrate ULE Decapsulation code, thanks to gcs - Global
Communication & Services GmbH. and Institute for Computer Sciences
Salzburg University. Hilmar Linder <hlinder@cosy.sbg.ac.at> and
Wolfram Stering <wstering@cosy.sbg.ac.at>
- [DVB] fix the module use count bugs, thanks to Hernan A.Perez Masci
for his initial work on this problem
- [DVB] if dvb_frontend_internal_ioctl() returns an error code, be sure
to deliver it to the calling application, don't ignore it (fixes the
bug that the frontend0 doesn't respond properly to unknown ioctls...)
- [DVB] major frontend code clean up, rewritten core tuning loop.
Thanks to Andrew de Quincey.
- [DVB] follow changes in dvb-core in skystar2, dvb-bt8xx
Michael Hunold [Mon, 26 Apr 2004 01:52:47 +0000 (18:52 -0700)]
[PATCH] DVB: Update DVB budget drivers
- [DVB] budget-av: patch by Kenneth Aafløy to add support for Typhoon
DVB-S budget card
- [DVB] budget.c: support for Fujitsu-Siemens Activy Card
- [DVB] budget-ci: add preliminary CI support