• Liu Gang's avatar
    arch/powerpc/sysdev/fsl_rio.c: release rapidio port I/O region resource if... · e80dd9a7
    Liu Gang authored
    arch/powerpc/sysdev/fsl_rio.c: release rapidio port I/O region resource if port failed to initialize
    
    The "struct rio_mport" contains a member of master port I/O memory
    resource structure "struct resource iores".  This resource will be read
    from device tree and be used for rapidio R/W transaction memory space.
    Rapidio requests the port I/O memory resource under the root resource
    "iomem_resource".
    
    			struct rio_mport *port;
    			port = kzalloc(sizeof(struct rio_mport), GFP_KERNEL);
    
    			request_resource(&iomem_resource, &port->iores);
    
    When port failed to initialize, allocated "rio_mport" structure memory
    will be freed, and the port I/O memory resource structure pointer
    "&port->iores" will be invalid.  If other requests resource under
    "iomem_resource", "&port->iores" node may be operated in the child
    resources list and this will cause the system to crash.
    
    So the requested port I/O memory resource should be released before
    freeing allocated "rio_mport" structure.
    Signed-off-by: default avatarLiu Gang <Gang.Liu@freescale.com>
    Acked-by: default avatarAlexandre Bounine <alexandre.bounine@idt.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Grant Likely <grant.likely@secretlab.ca>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    e80dd9a7
fsl_rio.c 46 KB