Len Brown [Thu, 11 Dec 2003 17:48:32 +0000 (12:48 -0500)]
[ACPI] update Linux to ACPICA 20031029 (Bob Moore)
Fixed a problem where a level-triggered GPE with an associated _Lxx
control method was incorrectly cleared twice.
Fixed a problem with the Field support code where an access can occur
beyond the end-of-region if the field is non-aligned but extends to the
very end of the parent region (resulted in an AE_AML_REGION_LIMIT
exception.)
Fixed a problem with ACPI Fixed Events where an RT Clock handler would
not get invoked on an RTC event. The RTC event bitmasks for the PM1
registers were not being initialized properly.
Implemented support for executing _STA and _INI methods for Processor
objects. Although this is currently not part of the ACPI specification,
there is existing ASL code that depends on the init-time execution of
these methods.
Implemented and deployed a GetDescriptorName function to decode the
various types of internal descriptors. Guards against null descriptors
during debug output also.
Implemented and deployed a GetNodeName function to extract the
4-character namespace node name. This function simplifies the debug and
error output, as well as guarding against null pointers during output.
Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to simplify
the debug and error output of 64-bit integers. This macro replaces the
HIDWORD and LODWORD macros for dumping these integers.
Updated the implementation of the Stall() operator to only call
AcpiOsStall(), and also return an error if the operand is larger than
255. This preserves the required behavior of not relinquishing the
processor, as would happen if AcpiOsSleep() was called for "long
stalls".
Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
initialized are now treated as NOOPs.
Cleaned up a handful of warnings during 64-bit generation.
Fixed a reported error where and incorrect GPE number was passed to the
GPE dispatch handler. This value is only used for error output,
however. Used this opportunity to clean up and streamline the GPE
dispatch code.
Jens Axboe [Tue, 9 Dec 2003 01:03:05 +0000 (17:03 -0800)]
[PATCH] scsi_ioctl memcpy'ing user address
James reported a bug in scsi_ioctl.c where it mem copies a user pointer
instead of using copy_from_user(). I inadvertently introduced this one
when getting rid of CDROM_SEND_PACKET. Here's a trivial patch to fix it.
James McMechan [Sun, 7 Dec 2003 13:57:40 +0000 (05:57 -0800)]
[PATCH] tmpfs oops fix
The problem was that the cursor was in the list being walked, and when
the pointer pointed to the cursor the list_del/list_add_tail pair would
oops trying to find the entry pointed to by the prev pointer of the
deleted cursor element.
The solution I found was to move the list_del earlier, before the
beginning of the list walk. since it is not used during the list walk and
should not count in the list enumeration it can be deleted, then the
list pointer cannot point to it so it can be added safely with the
list_add_tail without oopsing, and everything works as expected.
I am unable to oops this version with any of my test programs.
Jeff Garzik [Fri, 5 Dec 2003 15:34:00 +0000 (07:34 -0800)]
[PATCH] fix oops on unload in pcnet32
The driver was calling pci_unregister_driver for each _device_, and then
again at the end of the module unload routine. Remove the call that's
inside the loop, pci_unregister_driver should only be called once.
Ulrich Drepper [Thu, 4 Dec 2003 14:26:06 +0000 (06:26 -0800)]
[PATCH] Fix 'noexec' behaviour
We should not allow mmap() with PROT_EXEC on mounts marked "noexec",
since otherwise there is no way for user-supplied executable loaders
(like ld.so and emulator environments) to properly honour the
"noexec"ness of the target.
Jean Delvare [Thu, 4 Dec 2003 06:14:33 +0000 (22:14 -0800)]
[PATCH] I2C: fix i2c_smbus_write_byte() for i2c-nforce2
This patch fixes i2c_smbus_write_byte() being broken for i2c-nforce2.
This causes trouble when that module is used together with eeprom (which
is also in 2.6). We have had three user reports about the problem.
Credits go to Mark D. Studebaker for finding and fixing the problem.
Jens Axboe [Wed, 3 Dec 2003 23:53:31 +0000 (15:53 -0800)]
[PATCH] fix broken x86_64 rdtscll
The scheduler is completed b0rked on x86_64, and I finally found out
why. sched_clock() always returned 0, because rdtscll() always returned
0. The 'a' in the macro doesn't agree with the 'a' in the function,
yippe :-)
Ingo Molnar [Wed, 3 Dec 2003 04:59:12 +0000 (20:59 -0800)]
[PATCH] Fix /proc access to dead thread group list oops
The pid_alive() check within the loop is incorrect. If we are within
the tasklist lock and the thread group leader is valid then the thread
chain will be fully intact.
Instead, the check should be _outside_ the loop, since if the group
leader no longer exists, the whole list is gone and we must not try
to access it.
Hirofumi Ogawa [Mon, 1 Dec 2003 02:40:47 +0000 (18:40 -0800)]
[PATCH] Missing initialization of /proc/net/tcp seq_file
We need to initialize st->state in tcp_seq_start(). Otherwise
tcp_seq_stop() is run with previous st->state, and it calls the unneeded
unlock etc, causing a kernel crash.
Ben Collins [Wed, 26 Nov 2003 04:15:46 +0000 (20:15 -0800)]
[PATCH] Lastminute IEEE-1394 fixes
I've got a lot more changes than what's included here. I've put this
down to the bear minimum to get things working sanely.
Mainly, I just want to get all the people hit by this a chance to use
2.6.0 without having to get our tree. Changes itemized:
- Fix deadlock possibility in csr.c:read_maps()
- Fix kmalloc to use ATOMIC in highlevel.c.
- s/in_interrupt/irqs_disabled/ in ieee1394_transactions.c to fix
warnings when transactions occured.
- Introduce a release callback for the host driver and use it correctly.
- Reorganize the nodemgr probe so we do an initial scan to discover
devices, check IRM/CycleMaster, then do a final full probe when things
are kosher. Fixes a problem where device registration and hotplug
would cause some serious problems when a bus reset was forced in the
middle of the probe.
[PATCH] prevent oops from read of proc entry for tty drivers
There are /proc handles there setup by proc_tty_register_driver, but there is
no module ownership association, so anything that reads after module unload
will blow.
The trivial fix is to propagate the owner of tty_driver to proc entry.
David S. Miller [Mon, 24 Nov 2003 11:44:51 +0000 (03:44 -0800)]
[NET]: In sock_queue_rcv_skb(), do not deref skb->len after it is queued to the socket.
In implementations that use no socket locking, such as RAW sockets,
once we queue the SKB to the socket another cpu can remove the SKB
from the socket queue and free up the SKB making the skb->len access
touch freed memory.
Based upon a report from Burton Windle, kernel bugzilla #937
James Bottomley [Mon, 24 Nov 2003 04:02:15 +0000 (22:02 -0600)]
Fix locking problems in scsi_report_bus_reset() causing aic7xxx to hang
All the users of this function in the SCSI tree call it with the host
lock held. With the new list traversal code, it was trying to take
the lock again to traverse the list.
Fix it to use the unlocked version of list traversal and modify the
header comments to make it clear that the lock is expected to be held
on calling it.
James Bottomley [Sat, 22 Nov 2003 12:21:22 +0000 (06:21 -0600)]
Updated state model for SCSI devices
I've been looking at enforcing lifetime phases for SCSI devices
(primarily to try to get the mid layer to offload as much of the device
creation and hotplug pieces as it can).
I've hijacked the sdev_state field of the struct scsi_device (formerly
this was a bitmap, now it becomes an enumerated state).
I've also begun adding references sdev_gendev into the code to pin the
scsi_device---initially in the queue function, but possibly this should
also be done in the scsi_command_get/put, the idea being to prevent
scsi_device freeing while there's still device activity.
The object phases I identified are:
1. SDEV_CREATED - we've just allocated the device. It may respond to
internally generated commands, but not to user ones (the user should
actually have no way to access a device in this state, but just in
case).
2. SDEV_RUNNING - the device is fully operational
3. SDEV_CANCEL - The device is cleanly shutting down. It may respond to
internally generated commands (for cancellation/recovery) only; all user
commands are errored unless they have already been queued (QUEUE_FULL
handling and the like).
4. SDEV_DEL - The device is gone. *all* commands are errored out.
Ordinarily, the device should move through all four phases from creation
to destruction, but moving SDEV_RUNNING->SDEV_DEL because of surprise
ejection should work.
It's starting to look like the online flag should be absorbed into this
(offlined devices move essentially to SDEV_CANCEL and could be
reactivated by moving to SDEV_RUNNING).
I haven't altered the similar bitmap model that scsi_host has, although
this too should probably move to an enumerated state model.
I've tested this by physically yanking a module out from underneath a
running filesystem with no ill effects (other than a slew of I/O
errors).
The obvious problem is that this kills possible user error handling, but
we don't do any of that yet.
Mike Anderson [Sat, 22 Nov 2003 03:13:02 +0000 (21:13 -0600)]
[PATCH] scsi device ref count (update)
This patch is against scsi-bugfixes-2.6. I updated it based on comments
received. It breaks up the reference count initialization for scsi_device
and restores calling slave_destroy for all scsi_devices configured or
not. I ran a small regression using the scsi_debug, aic7xxx, and qla2xxx
driver. I also had a debug patch for more verbose kobject cleanup and
patch for a badness check on atomic_dec going negative (previously
provided by Linus).
The object cleanup appears to being functioning correctly. I only saw
previously reported badness output:
- Synchronizing SCSI cache fails on cleanup.
- scsi_debug.c missing release (I believe Doug posted a patch)
- aic7xxx warnings on rmmod due to ahc_platform_free calling
scsi_remove_host with ahc_list_lock held.
This patch splits the scsi device struct device register into init and
add. It also addresses memory leak issues of not calling slave_destroy
on scsi_devices that are not configured in.
Details:
* Make scsi_device_dev_release extern for scsi_scan to use in
alloc_sdev.
* Move scsi_free_sdev code to scsi_device_dev_release. Have
previous callers of scsi_free_sdev call slave_destroy plus put_device.
* Changed name of scsi_device_register to scsi_sysfs_add_sdev to
match host call and align with split struct device init.
* Move sdev_gendev device and class init to scsi_alloc_sdev.
Davide Libenzi [Sat, 22 Nov 2003 00:39:48 +0000 (16:39 -0800)]
[PATCH] More SiS interrupt routing
It turns out that the SiS irq routing logic doesn't go by chipset
after all - it's just that some pirq entries are "legacy" numbers,
while others are raw offsets into PCI config space (and the legacy
numbers are more commonly used with the older chipsets, which
explains the correlations).
Adam Belay [Fri, 21 Nov 2003 11:36:07 +0000 (03:36 -0800)]
[PATCH] reserve resources specified by the PnPBIOS properly
A bug prevents the PnP layer from reserving some of the resources
specified by the PnPBIOS. As a result some systems will have
unpredicable (random crashes etc.) problems because of resource
conflicts, especially when PCMCIA support is enabled. This patch
fixes the problem by ensuring that the proper resource data is
reserved.
David Stevens [Fri, 21 Nov 2003 08:49:32 +0000 (00:49 -0800)]
[IPV6]: Fix header length calculation in multicast input.
It did not account for extension headers properly. If we get
this length wrong, we do not determine if a multicast packet
is MLDv1 vs. MLDv2 correctly.
David Mosberger [Fri, 21 Nov 2003 06:10:39 +0000 (22:10 -0800)]
ia64: Drop printk from ia64_ni_syscall(). This is a temporary fix
for 2.6.0. The proper fix is to replace ia64_ni_syscall with
sys_ni_syscall, but that would make the patch quite large, so
we defer that till 2.6.1.
David Mosberger [Fri, 21 Nov 2003 05:25:04 +0000 (21:25 -0800)]
ia64: Fix off-by-1 error in imm60 patching. The bug hasn't been observed
in practice, but it's clearly wrong and just waiting there to
get triggered...
David Stevens [Thu, 20 Nov 2003 08:34:18 +0000 (00:34 -0800)]
[IPV6]: In igmp6_group_queried, fix address check to comply with RFC2710.
RFC2710 says:
1) MLD messages are never sent for multicast addresses whose scope is 0
(reserved) or 1 (node-local).
2) MLD messages ARE sent for multicast addresses whose scope is 2
(link-local), including Solicited-Node multicast addersses [ADDR-ARCH],
except for the link-scope, all-nodes address (FF02::1).
The current MLDv1 code does not send reports for link-scope addresses
and doesn't restrict scope 0. This may break switches that snoop reports for
determining which ports should receive particular addresses. Patch below.
David S. Miller [Wed, 19 Nov 2003 12:50:27 +0000 (04:50 -0800)]
[SPARC64]: Get PCI floppies fully functional again.
EBUS DMA fixes:
- Add EBUS_DMA_FLAG_TCI_DISABLE that the client can set if it
wants only to hear device interrupts, not DMA complete ones.
- When initially resetting the EBUS DMA unit, put valid burst etc.
encodings in the CSR register. Not doing this appears to leave
the attached ISA device in a weird state.
PCI FLOPPY fixes:
- Do ebus_dma_enable() before ebus_dma_request()
- In sun_pci_fd_set_dma_mode() do not forget to set the direction.
- Set EBUS_DMA_FLAG_TCI_DISABLE in ebus_dma flags.
- Make sure that in error paths sun_fdc/FCD1 will be -1 (invalid).
Thanks to Soyoung Park for loaning her Ultra5 to me so I could fix this.
Andrew Morton [Tue, 18 Nov 2003 16:16:51 +0000 (08:16 -0800)]
[PATCH] mpparse printk fix
From: Herbert Xu <herbert@gondor.apana.org.au>
The recent patch produces a message with no terminating newline on the
machine in question. This is because one of the four bytes that you're
printing out is NUL. The following patch avoids that problem.