• Ilya Dryomov's avatar
    rbd: prevent kernel stack blow up on rbd map · 6d69bb53
    Ilya Dryomov authored
    Mapping an image with a long parent chain (e.g. image foo, whose parent
    is bar, whose parent is baz, etc) currently leads to a kernel stack
    overflow, due to the following recursion in the reply path:
    
      rbd_osd_req_callback()
        rbd_obj_request_complete()
          rbd_img_obj_callback()
            rbd_img_parent_read_callback()
              rbd_obj_request_complete()
                ...
    
    Limit the parent chain to 16 images, which is ~5K worth of stack.  When
    the above recursion is eliminated, this limit can be lifted.
    
    Fixes: http://tracker.ceph.com/issues/12538
    
    Cc: stable@vger.kernel.org # 3.10+, needs backporting for < 4.2
    Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
    Reviewed-by: default avatarJosh Durgin <jdurgin@redhat.com>
    6d69bb53
rbd.c 146 KB