• Ilya Dryomov's avatar
    libceph: fix alloc_msg_with_page_vector() memory leaks · e8862740
    Ilya Dryomov authored
    Make it so that CEPH_MSG_DATA_PAGES data item can own pages,
    fixing a bunch of memory leaks for a page vector allocated in
    alloc_msg_with_page_vector().  Currently, only watch-notify
    messages trigger this allocation, and normally the page vector
    is freed either in handle_watch_notify() or by the caller of
    ceph_osdc_notify().  But if the message is freed before that
    (e.g. if the session faults while reading in the message or
    if the notify is stale), we leak the page vector.
    
    This was supposed to be fixed by switching to a message-owned
    pagelist, but that never happened.
    
    Fixes: 19079203 ("libceph: support for sending notifies")
    Reported-by: default avatarRoman Penyaev <rpenyaev@suse.de>
    Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
    Reviewed-by: default avatarRoman Penyaev <rpenyaev@suse.de>
    e8862740
osd_client.c 146 KB