lkml.org 
[lkml]   [2021]   [May]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v4 2/2] s390/vfio-ap: control access to PQAP(AQIC) interception handler
    On Tue, May 25, 2021 at 09:16:30AM -0400, Tony Krowiak wrote:
    >
    >
    > On 5/24/21 10:37 AM, Jason J. Herne wrote:
    > > On 5/21/21 3:36 PM, Tony Krowiak wrote:
    > > > The function pointer to the handler that processes interception of the
    > > > PQAP instruction is contained in the mdev. If the mdev is removed and
    > > > its storage de-allocated during the processing of the PQAP instruction,
    > > > the function pointer could get wiped out before the function is called
    > > > because there is currently nothing that controls access to it.
    > > >
    > > > This patch introduces two new functions:
    > > > * The kvm_arch_crypto_register_hook() function registers a function
    > > > pointer
    > > >    for processing intercepted crypto instructions.
    > > > * The kvm_arch_crypto_register_hook() function un-registers a function
    > > >    pointer that was previously registered.
    > >
    > > Typo: You meant kvm_arch_crypto_UNregister_hook() in the second bullet.
    > >
    > >
    > > Just one overall observation on this one. The whole hook system seems
    > > kind of over-engineered if this is our only use for it. It looks like a
    > > kvm_s390_crypto_hook is meant to link a specific module with a function
    > > pointer. Do we really need this concept?
    > >
    > > I think a simpler design could be to just place a mutex and a function
    > > pointer in the kvm_s390_crypto struct. Then you can grab the mutex in
    > > vfio_ap_ops.c when registering/unregistering. You would also grab the
    > > mutex in priv.c when calling the function pointer. What I am suggesting
    > > is essentially the exact same scheme you have implemented here, but
    > > simpler and with less infrastructure.
    >
    > That would be great, however; when I implemented something similar, it
    > resulted in a
    > lockdep splat between the lock used to protect the hook and the
    > matrix_dev->lock used to
    > protect updates to matrix_mdev (including the freeing thereof). After
    > pulling what little hair
    > I have left out, this seemed like a reasonable solution, over-engineered
    > though it may be.
    > If somebody has a simpler solution, I'm all ears.

    Why can't you put the locks in the right order? It looked trivial, I'm confused.

    Jason

    \
     
     \ /
      Last update: 2021-05-25 15:20    [W:3.431 / U:0.232 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site