• David Howells's avatar
    rxrpc, afs: Fix selection of abort codes · de696c47
    David Howells authored
    The RX_USER_ABORT code should really only be used to indicate that the user
    of the rxrpc service (ie. userspace) implicitly caused a call to be aborted
    - for instance if the AF_RXRPC socket is closed whilst the call was in
    progress.  (The user may also explicitly abort a call and specify the abort
    code to use).
    
    Change some of the points of generation to use other abort codes instead:
    
     (1) Abort the call with RXGEN_SS_UNMARSHAL or RXGEN_CC_UNMARSHAL if we see
         ENOMEM and EFAULT during received data delivery and abort with
         RX_CALL_DEAD in the default case.
    
     (2) Abort with RXGEN_SS_MARSHAL if we get ENOMEM whilst trying to send a
         reply.
    
     (3) Abort with RX_CALL_DEAD if we stop hearing from the peer if we had
         heard from the peer and abort with RX_CALL_TIMEOUT if we hadn't.
    
     (4) Abort with RX_CALL_DEAD if we try to disconnect a call that's not
         completed successfully or been aborted.
    Reported-by: default avatarJeffrey Altman <jaltman@auristor.com>
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: linux-afs@lists.infradead.org
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    de696c47
rxrpc.c 22.9 KB