lkml.org 
[lkml]   [2020]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH v2 05/22] resource: Report parent to walk_iomem_res_desc() callback
    From
    Date
    In support of detecting whether a resource might have been been claimed,
    report the parent to the walk_iomem_res_desc() callback. For example,
    the ACPI HMAT parser publishes "hmem" platform devices per target range.
    However, if the HMAT is disabled / missing a fallback driver can attach
    devices to the raw memory ranges as a fallback if it sees unclaimed /
    orphan "Soft Reserved" resources in the resource tree.

    Otherwise, find_next_iomem_res() returns a resource with garbage data
    from the stack allocation in __walk_iomem_res_desc() for the res->parent
    field.

    There are currently no users that expect ->child and ->sibling to be
    valid, and the resource_lock would be needed to traverse them. Use a
    compound literal to implicitly zero initialize the fields that are not
    being returned in addition to setting ->parent.

    Cc: Jason Gunthorpe <jgg@mellanox.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Wei Yang <richardw.yang@linux.intel.com>
    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    ---
    kernel/resource.c | 11 +++++++----
    1 file changed, 7 insertions(+), 4 deletions(-)

    diff --git a/kernel/resource.c b/kernel/resource.c
    index 841737bbda9e..f1175ce93a1d 100644
    --- a/kernel/resource.c
    +++ b/kernel/resource.c
    @@ -382,10 +382,13 @@ static int find_next_iomem_res(resource_size_t start, resource_size_t end,

    if (p) {
    /* copy data */
    - res->start = max(start, p->start);
    - res->end = min(end, p->end);
    - res->flags = p->flags;
    - res->desc = p->desc;
    + *res = (struct resource) {
    + .start = max(start, p->start),
    + .end = min(end, p->end),
    + .flags = p->flags,
    + .desc = p->desc,
    + .parent = p->parent,
    + };
    }

    read_unlock(&resource_lock);
    \
     
     \ /
      Last update: 2020-07-12 18:43    [W:4.198 / U:0.248 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site