RE: ACPICA Release 20081031 linuxized patch set

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch works very well here. I have checked it in.

Thanks for the help, Lin Ming.


>-----Original Message-----
>From: Lin, Ming M
>Sent: Thursday, November 13, 2008 1:37 AM
>To: Len Brown; Moore, Robert
>Cc: Brown, Len; linux-acpi@xxxxxxxxxxxxxxx; acpi
>Subject: Re: ACPICA Release 20081031 linuxized patch set
>
>Len, please try the below patch.
>
>commit 1f959eedaf20bef4c1b40bd64be87c774f9f2032
>Author: Lin Ming <ming.m.lin@xxxxxxxxx>
>Date:   Thu Nov 13 17:31:59 2008 +0800
>
>    Update object reference count if it's within a package
>---
> drivers/acpi/namespace/nspredef.c |   25 ++++++++++++++++++++++---
> 1 files changed, 22 insertions(+), 3 deletions(-)
>
>diff --git a/drivers/acpi/namespace/nspredef.c
>b/drivers/acpi/namespace/nspredef.c
>index 82a28d0..3f346a2 100644
>--- a/drivers/acpi/namespace/nspredef.c
>+++ b/drivers/acpi/namespace/nspredef.c
>@@ -91,7 +91,8 @@ acpi_ns_check_reference(char *pathname,
>
> static acpi_status
> acpi_ns_repair_object(u32 expected_btypes,
>-		      union acpi_operand_object **return_object_ptr);
>+		      union acpi_operand_object **return_object_ptr,
>+		      u32 package_index);
>
> /*
>  * Names for the types that can be returned by the predefined objects.
>@@ -890,7 +891,8 @@ acpi_ns_check_object_type(char *pathname,
> 		/* Type mismatch -- attempt repair of the returned object */
>
> 		status =
>-		    acpi_ns_repair_object(expected_btypes, return_object_ptr);
>+		    acpi_ns_repair_object(expected_btypes, return_object_ptr,
>+			package_index);
> 		if (ACPI_SUCCESS(status)) {
> 			return (status);
> 		}
>@@ -986,6 +988,8 @@ acpi_ns_check_reference(char *pathname,
>  * PARAMETERS:  Pathname        - Full pathname to the node (for error
>msgs)
>  *              return_object_ptr - Pointer to the object returned from
>the
>  *                                evaluation of a method or object
>+ *              PackageIndex    - Index of object within parent package
>+ *                                (if applicable - ACPI_NOT_PACKAGE
>otherwise)
>  *
>  * RETURN:      Status. AE_OK if repair was successful.
>  *
>@@ -996,7 +1000,8 @@ acpi_ns_check_reference(char *pathname,
>
> static acpi_status
> acpi_ns_repair_object(u32 expected_btypes,
>-		      union acpi_operand_object **return_object_ptr)
>+		      union acpi_operand_object **return_object_ptr,
>+		      u32 package_index)
> {
> 	union acpi_operand_object *return_object = *return_object_ptr;
> 	union acpi_operand_object *new_object;
>@@ -1039,6 +1044,20 @@ acpi_ns_repair_object(u32 expected_btypes,
>
> 		acpi_ut_remove_reference(return_object);
> 		*return_object_ptr = new_object;
>+
>+		/*
>+		 * If this object is within a package, we need to:
>+		 * 1. Decrease the reference count of the original object,
>+		 *    it was increased when buidling the package
>+		 * 2. Increase the reference count of the new object,
>+		 *    it will be decreased when releasing the package
>+		 */
>+
>+		if (package_index != ACPI_NOT_PACKAGE) {
>+			acpi_ut_remove_reference(return_object);
>+			acpi_ut_add_reference(new_object);
>+		}
>+
> 		return (AE_OK);
>
> 	default:
>
>
>On Thu, 2008-11-13 at 14:54 +0800, Len Brown wrote:
>>
>> > [PATCH 01/18] ACPICA: Fix several warnings under gcc 4 compiler
>> > [PATCH 02/18] ACPICA: Update FACS waking vector interfaces
>> > [PATCH 03/18] ACPICA: Fix possible memory leak on error in parser
>> > [PATCH 04/18] ACPICA: Optimize execution of AML While loops
>> > [PATCH 05/18] ACPICA: Add a mechanism to escape infinite AML While()
>loops
>> > [PATCH 06/18] ACPICA: Update debug output for IndexField I/O
>> > [PATCH 07/18] ACPICA: Fix namestring for the SystemCMOS address space
>> > [PATCH 08/18] ACPICA: Emit warning if two FACS or DSDT tables found in
>the FADT
>> > [PATCH 09/18] ACPICA: Add global pointer for FACS table to simplify
>FACS access
>> > [PATCH 10/18] ACPICA: Reformat comments, no functional changes
>> > [PATCH 11/18] ACPICA: Add support to externally execute _OSI method
>> > [PATCH 12/18] ACPICA: Remove references to obsolete ACPI_DUMP_APP
>> > [PATCH 13/18] ACPICA: Fix to allow aliases within ASL namepaths
>> > [PATCH 14/18] ACPICA: Allow multiple backslash prefix in namepaths
>> > [PATCH 15/18] ACPICA: Allow _WAK method to return an Integer
>> > [PATCH 16/18] ACPICA: Add Buffer->String conversion for predefined
>methods
>> > [PATCH 17/18] ACPICA: Consolidate method arg count validation code
>> > [PATCH 18/18] ACPICA: Enhance implicit return mechanism
>>
>> checkpatch.pl wasn't happy about the 80 column errors, or
>> the unnecessary {}'s in statements like this:
>>
>> if (foo) {
>> 	bar;
>> 	}
>>
>> I think the construct above is actually good programming practice
>> when the simple statement is a macro.  However, if it really is
>> a simple statment, such as return, I agree with checkpatch.pl.
>>
>> re: 80 colmns
>> I usually let them go if it makes the code easier to read.
>> howver, block comments w/ sufficient width really should
>> not need to violate the 80 column limit.
>>
>> no, i don't advocate you fix these things in the acpica->linux
>> translation process; as we want to make that as automated
>> as possible and fixing style things by hand only makes it harder later.
>>
>> but more importantly it looks like we have a double free:
>>
>> ACPI Warning (utdelete-0420): Large Reference Count (6B6B) in object
>> ffff88007c991b58 [20080926]
>> ACPI Warning (utdelete-0420): Large Reference Count (6B6B) in object
>> ffff88007c991df8 [20080926]
>> ACPI Warning (utdelete-0420): Large Reference Count (6B6C) in object
>> ffff88007c991b58 [20080926]
>> ACPI Warning (utdelete-0420): Large Reference Count (6B6C) in object
>> ffff88007c991df8 [20080926]
>> Slab corruption: Acpi-Operand start=ffff88007c991b58, len=72
>> Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
>> Last user: [<ffffffff80390463>](acpi_os_release_object+0x9/0xd)
>> 000: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6d 6b 6b 6b 6b 6b
>> Prev obj: start=ffff88007c991af8, len=72
>> Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
>> Last user:
>> [<ffffffff803b0174>](acpi_ut_allocate_object_desc_dbg+0x3c/0xb3)
>> 000: 00 00 00 00 00 00 00 00 0e 03 01 00 04 00 00 00
>> 010: 78 83 17 7b 00 88 ff ff 06 00 00 00 00 00 00 00
>> Next obj: start=ffff88007c991bb8, len=72
>> Redzone: 0xd84156c5635688c0/0xd84156c5635688c0.
>> Last user:
>> [<ffffffff803b0174>](acpi_ut_allocate_object_desc_dbg+0x3c/0xb3)
>> 000: 00 00 00 00 00 00 00 00 0e 01 03 00 00 00 00 00
>> 010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>> Slab corruption: Acpi-Operand start=ffff88007c991df8, len=72
>> Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
>> Last user: [<ffffffff80390463>](acpi_os_release_object+0x9/0xd)
>> 000: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6d 6b 6b 6b 6b 6b
>> Prev obj: start=ffff88007c991d98, len=72
>> Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
>> Last user: [<ffffffff80390463>](acpi_os_release_object+0x9/0xd)
>> 000: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
>> 010: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
>> Next obj: start=ffff88007c991e58, len=72
>> Redzone: 0x9f911029d74e35b/0x9f911029d74e35b.
>> Last user: [<0000000000000000>](0x0)
>> 000: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
>> 010: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b
>> ACPI Warning (utdelete-0420): Large Reference Count (6B6B) in object
>> ffff88007c991b58 [20080926]
>> ACPI Warning (utdelete-0420): Large Reference Count (6B6B) in object
>> ffff88007c991df8 [20080926]
>> ACPI Warning (utdelete-0420): Large Reference Count (6B6A) in object
>> ffff88007c991b58 [20080926]
>> ACPI Warning (utdelete-0420): Large Reference Count (6B6A) in object
>> ffff88007c991df8 [20080926]
>> ACPI Warning (utdelete-0420): Large Reference Count (6B6B) in object
>> ffff88007c991b58 [20080926]
>> ACPI Warning (utdelete-0420): Large Reference Count (6B6B) in object
>> ffff88007c991df8 [20080926]
>>

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux