• Elliot Berman's avatar
    misc: fastrpc: Pass bitfield into qcom_scm_assign_mem · aaca766c
    Elliot Berman authored
    The srcvm parameter of qcom_scm_assign_mem is a pointer to a bitfield of
    VMIDs. The  bitfield is updated with which VMIDs have permissions
    after the qcom_scm_assign_mem call. This makes it simpler for clients to
    make qcom_scm_assign_mem calls later, they always pass in same srcvm
    bitfield and do not need to closely track whether memory was originally
    shared.
    
    When restoring permissions to HLOS, fastrpc is incorrectly using the
    first VMID directly -- neither the BIT nor the other possible VMIDs the
    memory was already assigned to.  We already have a field intended for
    this purpose: "perms" in the struct fastrpc_channel_ctx, but it was
    never used. Start using the perms field.
    
    Cc: Abel Vesa <abel.vesa@linaro.org>
    Cc: Vamsi Krishna Gattupalli <quic_vgattupa@quicinc.com>
    Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Fixes: e90d9119 ("misc: fastrpc: Add support to secure memory map")
    Fixes: 08715610 ("misc: fastrpc: Add support for audiopd")
    Fixes: 532ad70c ("misc: fastrpc: Add mmap request assigning for static PD pool")
    Tested-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: default avatarElliot Berman <quic_eberman@quicinc.com>
    
    drivers/misc/fastrpc.c | 15 ++++++---------
     1 file changed, 6 insertions(+), 9 deletions(-)
    
    Link: https://lore.kernel.org/r/20230112182313.521467-1-quic_eberman@quicinc.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    aaca766c
fastrpc.c 57.6 KB