• SeongJae Park's avatar
    xen/xenbus: Allow watches discard events before queueing · fed1755b
    SeongJae Park authored
    If handling logics of watch events are slower than the events enqueue
    logic and the events can be created from the guests, the guests could
    trigger memory pressure by intensively inducing the events, because it
    will create a huge number of pending events that exhausting the memory.
    
    Fortunately, some watch events could be ignored, depending on its
    handler callback.  For example, if the callback has interest in only one
    single path, the watch wouldn't want multiple pending events.  Or, some
    watches could ignore events to same path.
    
    To let such watches to volutarily help avoiding the memory pressure
    situation, this commit introduces new watch callback, 'will_handle'.  If
    it is not NULL, it will be called for each new event just before
    enqueuing it.  Then, if the callback returns false, the event will be
    discarded.  No watch is using the callback for now, though.
    
    This is part of XSA-349
    
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarSeongJae Park <sjpark@amazon.de>
    Reported-by: default avatarMichael Kurth <mku@amazon.de>
    Reported-by: default avatarPawel Wieczorkiewicz <wipawel@amazon.de>
    Reviewed-by: default avatarJuergen Gross <jgross@suse.com>
    Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
    fed1755b
xenbus_client.c 23.1 KB