• Russell King's avatar
    MFD: mcp-core: sanitize host creation/removal · 30816ac0
    Russell King authored
    host_unregister() gives us no chance between removing the device
    and the mcp data structure being freed to access the data inbetween,
    which drivers may need to do if they need to iounmap() pointers in
    their private data structures.
    
    Therefore, re-jig the interfaces, which are now, on creation:
    
    	mcp = mcp_host_alloc()
    	if (mcp) {
    		ret = mcp_host_add(mcp, data);
    
    		if (!ret)
    			mcp_host_free(mcp);
    	}
    
    and on removal:
    
    	mcp_host_del(mcp);
    	... access mcp ...
    	mcp_host_free(mcp);
    
    The free does the final put_device() on the struct device as one would
    expect.
    Acked-by: default avatarJochen Friedrich <jochen@scram.de>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    30816ac0
mcp-core.c 6.11 KB