diff options
Diffstat (limited to 'source/components/namespace')
| -rw-r--r-- | source/components/namespace/nsaccess.c | 5 | ||||
| -rw-r--r-- | source/components/namespace/nsalloc.c | 6 | ||||
| -rw-r--r-- | source/components/namespace/nsdump.c | 3 | ||||
| -rw-r--r-- | source/components/namespace/nsdumpdv.c | 2 | ||||
| -rw-r--r-- | source/components/namespace/nseval.c | 1 | ||||
| -rw-r--r-- | source/components/namespace/nsinit.c | 2 | ||||
| -rw-r--r-- | source/components/namespace/nsload.c | 11 | ||||
| -rw-r--r-- | source/components/namespace/nsnames.c | 4 | ||||
| -rw-r--r-- | source/components/namespace/nsobject.c | 10 | ||||
| -rw-r--r-- | source/components/namespace/nsparse.c | 10 | ||||
| -rw-r--r-- | source/components/namespace/nssearch.c | 1 | ||||
| -rw-r--r-- | source/components/namespace/nsutils.c | 17 | ||||
| -rw-r--r-- | source/components/namespace/nswalk.c | 12 | ||||
| -rw-r--r-- | source/components/namespace/nsxfeval.c | 22 | ||||
| -rw-r--r-- | source/components/namespace/nsxfname.c | 69 | ||||
| -rw-r--r-- | source/components/namespace/nsxfobj.c | 5 | 
16 files changed, 92 insertions, 88 deletions
| diff --git a/source/components/namespace/nsaccess.c b/source/components/namespace/nsaccess.c index 9dfa76fb0850..64342badd90d 100644 --- a/source/components/namespace/nsaccess.c +++ b/source/components/namespace/nsaccess.c @@ -121,12 +121,12 @@ AcpiNsRootInitialize (          Status = AcpiNsLookup (NULL, InitVal->Name, InitVal->Type,                          ACPI_IMODE_LOAD_PASS2, ACPI_NS_NO_UPSEARCH,                          NULL, &NewNode); - -        if (ACPI_FAILURE (Status) || (!NewNode)) /* Must be on same line for code converter */ +        if (ACPI_FAILURE (Status))          {              ACPI_EXCEPTION ((AE_INFO, Status,                  "Could not create predefined name %s",                  InitVal->Name)); +            continue;          }          /* @@ -697,4 +697,3 @@ AcpiNsLookup (      *ReturnNode = ThisNode;      return_ACPI_STATUS (AE_OK);  } - diff --git a/source/components/namespace/nsalloc.c b/source/components/namespace/nsalloc.c index c7e83e0eb49c..d10c997ed7f6 100644 --- a/source/components/namespace/nsalloc.c +++ b/source/components/namespace/nsalloc.c @@ -376,7 +376,7 @@ AcpiNsDeleteChildren (   *   * RETURN:      None.   * - * DESCRIPTION: Delete a subtree of the namespace.  This includes all objects + * DESCRIPTION: Delete a subtree of the namespace. This includes all objects   *              stored within the subtree.   *   ******************************************************************************/ @@ -472,7 +472,7 @@ AcpiNsDeleteNamespaceSubtree (   * RETURN:      Status   *   * DESCRIPTION: Delete entries within the namespace that are owned by a - *              specific ID.  Used to delete entire ACPI tables.  All + *              specific ID. Used to delete entire ACPI tables. All   *              reference counts are updated.   *   * MUTEX:       Locks namespace during deletion walk. @@ -584,5 +584,3 @@ AcpiNsDeleteNamespaceByOwner (      (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);      return_VOID;  } - - diff --git a/source/components/namespace/nsdump.c b/source/components/namespace/nsdump.c index e0635dc7ba22..ef2aac5e5e05 100644 --- a/source/components/namespace/nsdump.c +++ b/source/components/namespace/nsdump.c @@ -736,7 +736,7 @@ AcpiNsDumpEntry (   *   * PARAMETERS:  SearchBase          - Root of subtree to be dumped, or   *                                    NS_ALL to dump the entire namespace - *              MaxDepth            - Maximum depth of dump.  Use INT_MAX + *              MaxDepth            - Maximum depth of dump. Use INT_MAX   *                                    for an effectively unlimited depth.   *   * RETURN:      None @@ -780,4 +780,3 @@ AcpiNsDumpTables (  }  #endif  #endif - diff --git a/source/components/namespace/nsdumpdv.c b/source/components/namespace/nsdumpdv.c index 9d30886608a3..b42b824a0dc9 100644 --- a/source/components/namespace/nsdumpdv.c +++ b/source/components/namespace/nsdumpdv.c @@ -157,5 +157,3 @@ AcpiNsDumpRootDevices (  #endif  #endif - - diff --git a/source/components/namespace/nseval.c b/source/components/namespace/nseval.c index 0183f7e77441..537dfafa17b3 100644 --- a/source/components/namespace/nseval.c +++ b/source/components/namespace/nseval.c @@ -482,4 +482,3 @@ Exit:      }      return_VOID;  } - diff --git a/source/components/namespace/nsinit.c b/source/components/namespace/nsinit.c index f3907aafb3a4..a24a67ae3c23 100644 --- a/source/components/namespace/nsinit.c +++ b/source/components/namespace/nsinit.c @@ -254,7 +254,7 @@ ErrorExit:   *   * RETURN:      Status   * - * DESCRIPTION: Callback from AcpiWalkNamespace.  Invoked for every object + * DESCRIPTION: Callback from AcpiWalkNamespace. Invoked for every object   *              within the  namespace.   *   *              Currently, the only objects that require initialization are: diff --git a/source/components/namespace/nsload.c b/source/components/namespace/nsload.c index 3ef33f9ce9d9..77aed81c2ca8 100644 --- a/source/components/namespace/nsload.c +++ b/source/components/namespace/nsload.c @@ -93,8 +93,8 @@ AcpiNsLoadTable (      /*       * Parse the table and load the namespace with all named -     * objects found within.  Control methods are NOT parsed -     * at this time.  In fact, the control methods cannot be +     * objects found within. Control methods are NOT parsed +     * at this time. In fact, the control methods cannot be       * parsed until the entire namespace is loaded, because       * if a control method makes a forward reference (call)       * to another control method, we can't continue parsing @@ -142,7 +142,7 @@ Unlock:      }      /* -     * Now we can parse the control methods.  We always parse +     * Now we can parse the control methods. We always parse       * them here for a sanity check, and if configured for       * just-in-time parsing, we delete the control method       * parse trees. @@ -192,7 +192,7 @@ AcpiNsLoadNamespace (      }      /* -     * Load the namespace.  The DSDT is required, +     * Load the namespace. The DSDT is required,       * but the SSDT and PSDT tables are optional.       */      Status = AcpiNsLoadTableByType (ACPI_TABLE_ID_DSDT); @@ -318,7 +318,7 @@ AcpiNsDeleteSubtree (   *  RETURN:         Status   *   *  DESCRIPTION:    Shrinks the namespace, typically in response to an undocking - *                  event.  Deletes an entire subtree starting from (and + *                  event. Deletes an entire subtree starting from (and   *                  including) the given handle.   *   ******************************************************************************/ @@ -353,4 +353,3 @@ AcpiNsUnloadNamespace (  }  #endif  #endif - diff --git a/source/components/namespace/nsnames.c b/source/components/namespace/nsnames.c index f70900da1d1a..e7c73a24a8e1 100644 --- a/source/components/namespace/nsnames.c +++ b/source/components/namespace/nsnames.c @@ -223,7 +223,7 @@ AcpiNsGetPathnameLength (              ACPI_ERROR ((AE_INFO,                  "Invalid Namespace Node (%p) while traversing namespace",                  NextNode)); -            return 0; +            return (0);          }          Size += ACPI_PATH_SEGMENT_LENGTH;          NextNode = NextNode->Parent; @@ -299,5 +299,3 @@ AcpiNsHandleToPathname (          (char *) Buffer->Pointer, (UINT32) RequiredSize));      return_ACPI_STATUS (AE_OK);  } - - diff --git a/source/components/namespace/nsobject.c b/source/components/namespace/nsobject.c index 9b219a562447..54e918ebbcdd 100644 --- a/source/components/namespace/nsobject.c +++ b/source/components/namespace/nsobject.c @@ -66,7 +66,7 @@   * RETURN:      Status   *   * DESCRIPTION: Record the given object as the value associated with the - *              name whose ACPI_HANDLE is passed.  If Object is NULL + *              name whose ACPI_HANDLE is passed. If Object is NULL   *              and Type is ACPI_TYPE_ANY, set the name as having no value.   *              Note: Future may require that the Node->Flags field be passed   *              as a parameter. @@ -146,7 +146,7 @@ AcpiNsAttachObject (      {          /*           * Value passed is a name handle and that name has a -         * non-null value.  Use that name's value and type. +         * non-null value. Use that name's value and type.           */          ObjDesc    = ((ACPI_NAMESPACE_NODE *) Object)->Object;          ObjectType = ((ACPI_NAMESPACE_NODE *) Object)->Type; @@ -354,7 +354,7 @@ AcpiNsGetSecondaryObject (   *   * RETURN:      Status   * - * DESCRIPTION: Low-level attach data.  Create and attach a Data object. + * DESCRIPTION: Low-level attach data. Create and attach a Data object.   *   ******************************************************************************/ @@ -420,7 +420,7 @@ AcpiNsAttachData (   *   * RETURN:      Status   * - * DESCRIPTION: Low-level detach data.  Delete the data node, but the caller + * DESCRIPTION: Low-level detach data. Delete the data node, but the caller   *              is responsible for the actual data.   *   ******************************************************************************/ @@ -501,5 +501,3 @@ AcpiNsGetAttachedData (      return (AE_NOT_FOUND);  } - - diff --git a/source/components/namespace/nsparse.c b/source/components/namespace/nsparse.c index 2c768c0b699f..4037456ac115 100644 --- a/source/components/namespace/nsparse.c +++ b/source/components/namespace/nsparse.c @@ -187,11 +187,11 @@ AcpiNsParseTable (      /*       * AML Parse, pass 1       * -     * In this pass, we load most of the namespace.  Control methods -     * are not parsed until later.  A parse tree is not created.  Instead, -     * each Parser Op subtree is deleted when it is finished.  This saves +     * In this pass, we load most of the namespace. Control methods +     * are not parsed until later. A parse tree is not created. Instead, +     * each Parser Op subtree is deleted when it is finished. This saves       * a great deal of memory, and allows a small cache of parse objects -     * to service the entire parse.  The second pass of the parse then +     * to service the entire parse. The second pass of the parse then       * performs another complete parse of the AML.       */      ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 1\n")); @@ -221,5 +221,3 @@ AcpiNsParseTable (      return_ACPI_STATUS (Status);  } - - diff --git a/source/components/namespace/nssearch.c b/source/components/namespace/nssearch.c index d6f59ccbd104..82d9a0659b19 100644 --- a/source/components/namespace/nssearch.c +++ b/source/components/namespace/nssearch.c @@ -421,4 +421,3 @@ AcpiNsSearchAndEnter (      *ReturnNode = NewNode;      return_ACPI_STATUS (AE_OK);  } - diff --git a/source/components/namespace/nsutils.c b/source/components/namespace/nsutils.c index 43f734e81902..6370dab2a693 100644 --- a/source/components/namespace/nsutils.c +++ b/source/components/namespace/nsutils.c @@ -622,7 +622,7 @@ AcpiNsExternalizeName (                          ((NumSegments > 0) ? (NumSegments - 1) : 0) + 1;      /* -     * Check to see if we're still in bounds.  If not, there's a problem +     * Check to see if we're still in bounds. If not, there's a problem       * with InternalName (invalid format).       */      if (RequiredLength > InternalNameLength) @@ -655,10 +655,13 @@ AcpiNsExternalizeName (                  (*ConvertedName)[j++] = '.';              } -            (*ConvertedName)[j++] = InternalName[NamesIndex++]; -            (*ConvertedName)[j++] = InternalName[NamesIndex++]; -            (*ConvertedName)[j++] = InternalName[NamesIndex++]; -            (*ConvertedName)[j++] = InternalName[NamesIndex++]; +            /* Copy and validate the 4-char name segment */ + +            ACPI_MOVE_NAME (&(*ConvertedName)[j], &InternalName[NamesIndex]); +            AcpiUtRepairName (&(*ConvertedName)[j]); + +            j += ACPI_NAME_SIZE; +            NamesIndex += ACPI_NAME_SIZE;          }      } @@ -797,7 +800,7 @@ AcpiNsOpensScope (   *                            \ (backslash) and ^ (carat) prefixes, and the   *                            . (period) to separate segments are supported.   *              PrefixNode   - Root of subtree to be searched, or NS_ALL for the - *                            root of the name space.  If Name is fully + *                            root of the name space. If Name is fully   *                            qualified (first INT8 is '\'), the passed value   *                            of Scope will not be accessed.   *              Flags       - Used to indicate whether to perform upsearch or @@ -805,7 +808,7 @@ AcpiNsOpensScope (   *              ReturnNode  - Where the Node is returned   *   * DESCRIPTION: Look up a name relative to a given scope and return the - *              corresponding Node.  NOTE: Scope can be null. + *              corresponding Node. NOTE: Scope can be null.   *   * MUTEX:       Locks namespace   * diff --git a/source/components/namespace/nswalk.c b/source/components/namespace/nswalk.c index 35c3e178966a..7c3a4346f399 100644 --- a/source/components/namespace/nswalk.c +++ b/source/components/namespace/nswalk.c @@ -65,8 +65,8 @@   * RETURN:      ACPI_NAMESPACE_NODE - Pointer to the NEXT child or NULL if   *                                    none is found.   * - * DESCRIPTION: Return the next peer node within the namespace.  If Handle - *              is valid, Scope is ignored.  Otherwise, the first node + * DESCRIPTION: Return the next peer node within the namespace. If Handle + *              is valid, Scope is ignored. Otherwise, the first node   *              within Scope is returned.   *   ******************************************************************************/ @@ -105,8 +105,8 @@ AcpiNsGetNextNode (   * RETURN:      ACPI_NAMESPACE_NODE - Pointer to the NEXT child or NULL if   *                                    none is found.   * - * DESCRIPTION: Return the next peer node within the namespace.  If Handle - *              is valid, Scope is ignored.  Otherwise, the first node + * DESCRIPTION: Return the next peer node within the namespace. If Handle + *              is valid, Scope is ignored. Otherwise, the first node   *              within Scope is returned.   *   ******************************************************************************/ @@ -327,7 +327,7 @@ AcpiNsWalkNamespace (          /*           * Depth first search: Attempt to go down another level in the -         * namespace if we are allowed to.  Don't go any further if we have +         * namespace if we are allowed to. Don't go any further if we have           * reached the caller specified maximum depth or if the user           * function has specified that the maximum depth has been reached.           */ @@ -382,5 +382,3 @@ AcpiNsWalkNamespace (      return_ACPI_STATUS (AE_OK);  } - - diff --git a/source/components/namespace/nsxfeval.c b/source/components/namespace/nsxfeval.c index 5006588e85b6..fcd6fb758758 100644 --- a/source/components/namespace/nsxfeval.c +++ b/source/components/namespace/nsxfeval.c @@ -68,16 +68,16 @@ AcpiNsResolveReferences (   * PARAMETERS:  Handle              - Object handle (optional)   *              Pathname            - Object pathname (optional)   *              ExternalParams      - List of parameters to pass to method, - *                                    terminated by NULL.  May be NULL + *                                    terminated by NULL. May be NULL   *                                    if no parameters are being passed.   *              ReturnBuffer        - Where to put method's return value (if - *                                    any).  If NULL, no value is returned. + *                                    any). If NULL, no value is returned.   *              ReturnType          - Expected type of return object   *   * RETURN:      Status   *   * DESCRIPTION: Find and evaluate the given object, passing the given - *              parameters if necessary.  One of "Handle" or "Pathname" must + *              parameters if necessary. One of "Handle" or "Pathname" must   *              be valid (non-null)   *   ******************************************************************************/ @@ -168,15 +168,15 @@ ACPI_EXPORT_SYMBOL (AcpiEvaluateObjectTyped)   * PARAMETERS:  Handle              - Object handle (optional)   *              Pathname            - Object pathname (optional)   *              ExternalParams      - List of parameters to pass to method, - *                                    terminated by NULL.  May be NULL + *                                    terminated by NULL. May be NULL   *                                    if no parameters are being passed.   *              ReturnBuffer        - Where to put method's return value (if - *                                    any).  If NULL, no value is returned. + *                                    any). If NULL, no value is returned.   *   * RETURN:      Status   *   * DESCRIPTION: Find and evaluate the given object, passing the given - *              parameters if necessary.  One of "Handle" or "Pathname" must + *              parameters if necessary. One of "Handle" or "Pathname" must   *              be valid (non-null)   *   ******************************************************************************/ @@ -537,7 +537,7 @@ AcpiWalkNamespace (      Status = AcpiUtAcquireReadLock (&AcpiGbl_NamespaceRwLock);      if (ACPI_FAILURE (Status))      { -        return (Status); +        return_ACPI_STATUS (Status);      }      /* @@ -591,8 +591,8 @@ AcpiNsGetDeviceCallback (      ACPI_STATUS             Status;      ACPI_NAMESPACE_NODE     *Node;      UINT32                  Flags; -    ACPI_DEVICE_ID          *Hid; -    ACPI_DEVICE_ID_LIST     *Cid; +    ACPI_PNP_DEVICE_ID      *Hid; +    ACPI_PNP_DEVICE_ID_LIST *Cid;      UINT32                  i;      BOOLEAN                 Found;      int                     NoMatch; @@ -726,7 +726,7 @@ AcpiNsGetDeviceCallback (   * DESCRIPTION: Performs a modified depth-first walk of the namespace tree,   *              starting (and ending) at the object specified by StartHandle.   *              The UserFunction is called whenever an object of type - *              Device is found.  If the user function returns + *              Device is found. If the user function returns   *              a non-zero value, the search is terminated immediately and this   *              value is returned to the caller.   * @@ -956,5 +956,3 @@ UnlockAndExit:  }  ACPI_EXPORT_SYMBOL (AcpiGetData) - - diff --git a/source/components/namespace/nsxfname.c b/source/components/namespace/nsxfname.c index 4690d09e90d5..1d5aeecb940b 100644 --- a/source/components/namespace/nsxfname.c +++ b/source/components/namespace/nsxfname.c @@ -58,8 +58,8 @@  static char *  AcpiNsCopyDeviceId ( -    ACPI_DEVICE_ID          *Dest, -    ACPI_DEVICE_ID          *Source, +    ACPI_PNP_DEVICE_ID      *Dest, +    ACPI_PNP_DEVICE_ID      *Source,      char                    *StringArea); @@ -75,8 +75,8 @@ AcpiNsCopyDeviceId (   * RETURN:      Status   *   * DESCRIPTION: This routine will search for a caller specified name in the - *              name space.  The caller can restrict the search region by - *              specifying a non NULL parent.  The parent value is itself a + *              name space. The caller can restrict the search region by + *              specifying a non NULL parent. The parent value is itself a   *              namespace handle.   *   ******************************************************************************/ @@ -164,7 +164,7 @@ ACPI_EXPORT_SYMBOL (AcpiGetHandle)   * RETURN:      Pointer to a string containing the fully qualified Name.   *   * DESCRIPTION: This routine returns the fully qualified name associated with - *              the Handle parameter.  This and the AcpiPathnameToHandle are + *              the Handle parameter. This and the AcpiPathnameToHandle are   *              complementary functions.   *   ******************************************************************************/ @@ -227,8 +227,7 @@ AcpiGetName (      /* Just copy the ACPI name from the Node and zero terminate it */ -    ACPI_STRNCPY (Buffer->Pointer, AcpiUtGetNodeName (Node), -                ACPI_NAME_SIZE); +    ACPI_MOVE_NAME (Buffer->Pointer, AcpiUtGetNodeName (Node));      ((char *) Buffer->Pointer) [ACPI_NAME_SIZE] = 0;      Status = AE_OK; @@ -246,23 +245,24 @@ ACPI_EXPORT_SYMBOL (AcpiGetName)   *   * FUNCTION:    AcpiNsCopyDeviceId   * - * PARAMETERS:  Dest                - Pointer to the destination DEVICE_ID - *              Source              - Pointer to the source DEVICE_ID + * PARAMETERS:  Dest                - Pointer to the destination PNP_DEVICE_ID + *              Source              - Pointer to the source PNP_DEVICE_ID   *              StringArea          - Pointer to where to copy the dest string   *   * RETURN:      Pointer to the next string area   * - * DESCRIPTION: Copy a single DEVICE_ID, including the string data. + * DESCRIPTION: Copy a single PNP_DEVICE_ID, including the string data.   *   ******************************************************************************/  static char *  AcpiNsCopyDeviceId ( -    ACPI_DEVICE_ID          *Dest, -    ACPI_DEVICE_ID          *Source, +    ACPI_PNP_DEVICE_ID      *Dest, +    ACPI_PNP_DEVICE_ID      *Source,      char                    *StringArea)  { -    /* Create the destination DEVICE_ID */ + +    /* Create the destination PNP_DEVICE_ID */      Dest->String = StringArea;      Dest->Length = Source->Length; @@ -287,8 +287,8 @@ AcpiNsCopyDeviceId (   *              namespace node and possibly by running several standard   *              control methods (Such as in the case of a device.)   * - * For Device and Processor objects, run the Device _HID, _UID, _CID, _STA, - * _ADR, _SxW, and _SxD methods. + * For Device and Processor objects, run the Device _HID, _UID, _CID, _SUB, + * _STA, _ADR, _SxW, and _SxD methods.   *   * Note: Allocates the return buffer, must be freed by the caller.   * @@ -301,9 +301,10 @@ AcpiGetObjectInfo (  {      ACPI_NAMESPACE_NODE     *Node;      ACPI_DEVICE_INFO        *Info; -    ACPI_DEVICE_ID_LIST     *CidList = NULL; -    ACPI_DEVICE_ID          *Hid = NULL; -    ACPI_DEVICE_ID          *Uid = NULL; +    ACPI_PNP_DEVICE_ID_LIST *CidList = NULL; +    ACPI_PNP_DEVICE_ID      *Hid = NULL; +    ACPI_PNP_DEVICE_ID      *Uid = NULL; +    ACPI_PNP_DEVICE_ID      *Sub = NULL;      char                    *NextIdString;      ACPI_OBJECT_TYPE        Type;      ACPI_NAME               Name; @@ -356,7 +357,7 @@ AcpiGetObjectInfo (      {          /*           * Get extra info for ACPI Device/Processor objects only: -         * Run the Device _HID, _UID, and _CID methods. +         * Run the Device _HID, _UID, _SUB, and _CID methods.           *           * Note: none of these methods are required, so they may or may           * not be present for this device. The Info->Valid bitfield is used @@ -381,6 +382,15 @@ AcpiGetObjectInfo (              Valid |= ACPI_VALID_UID;          } +        /* Execute the Device._SUB method */ + +        Status = AcpiUtExecute_SUB (Node, &Sub); +        if (ACPI_SUCCESS (Status)) +        { +            InfoSize += Sub->Length; +            Valid |= ACPI_VALID_SUB; +        } +          /* Execute the Device._CID method */          Status = AcpiUtExecute_CID (Node, &CidList); @@ -388,7 +398,7 @@ AcpiGetObjectInfo (          {              /* Add size of CID strings and CID pointer array */ -            InfoSize += (CidList->ListSize - sizeof (ACPI_DEVICE_ID_LIST)); +            InfoSize += (CidList->ListSize - sizeof (ACPI_PNP_DEVICE_ID_LIST));              Valid |= ACPI_VALID_CID;          }      } @@ -463,14 +473,15 @@ AcpiGetObjectInfo (      NextIdString = ACPI_CAST_PTR (char, Info->CompatibleIdList.Ids);      if (CidList)      { -        /* Point past the CID DEVICE_ID array */ +        /* Point past the CID PNP_DEVICE_ID array */ -        NextIdString += ((ACPI_SIZE) CidList->Count * sizeof (ACPI_DEVICE_ID)); +        NextIdString += ((ACPI_SIZE) CidList->Count * sizeof (ACPI_PNP_DEVICE_ID));      }      /* -     * Copy the HID, UID, and CIDs to the return buffer. The variable-length -     * strings are copied to the reserved area at the end of the buffer. +     * Copy the HID, UID, SUB, and CIDs to the return buffer. +     * The variable-length strings are copied to the reserved area +     * at the end of the buffer.       *       * For HID and CID, check if the ID is a PCI Root Bridge.       */ @@ -491,6 +502,12 @@ AcpiGetObjectInfo (              Uid, NextIdString);      } +    if (Sub) +    { +        NextIdString = AcpiNsCopyDeviceId (&Info->SubsystemId, +            Sub, NextIdString); +    } +      if (CidList)      {          Info->CompatibleIdList.Count = CidList->Count; @@ -531,6 +548,10 @@ Cleanup:      {          ACPI_FREE (Uid);      } +    if (Sub) +    { +        ACPI_FREE (Sub); +    }      if (CidList)      {          ACPI_FREE (CidList); diff --git a/source/components/namespace/nsxfobj.c b/source/components/namespace/nsxfobj.c index 02f7777a3965..ea83271a1348 100644 --- a/source/components/namespace/nsxfobj.c +++ b/source/components/namespace/nsxfobj.c @@ -202,8 +202,8 @@ ACPI_EXPORT_SYMBOL (AcpiGetParent)   *   * RETURN:      Status   * - * DESCRIPTION: Return the next peer object within the namespace.  If Handle is - *              valid, Scope is ignored.  Otherwise, the first object within + * DESCRIPTION: Return the next peer object within the namespace. If Handle is + *              valid, Scope is ignored. Otherwise, the first object within   *              Scope is returned.   *   ******************************************************************************/ @@ -282,4 +282,3 @@ UnlockAndExit:  }  ACPI_EXPORT_SYMBOL (AcpiGetNextObject) - | 
