• David Howells's avatar
    afs: Fix vlserver record corruption · a6853b9c
    David Howells authored
    Because I made the afs_call struct share pointers to an afs_server object
    and an afs_vlserver object to save space, afs_put_call() calls
    afs_put_server() on afs_vlserver object (which is only meant for the
    afs_server object) because it sees that call->server isn't NULL.
    
    This means that the afs_vlserver object gets unpredictably and randomly
    modified, depending on what config options are set (such as lockdep).
    
    Fix this by getting rid of the union and having two non-overlapping
    pointers in the afs_call struct.
    
    Fixes: ffba718e ("afs: Get rid of afs_call::reply[]")
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    a6853b9c
internal.h 52.9 KB