]> www.infradead.org Git - users/jedix/linux-maple.git/commit
rbd: prevent kernel stack blow up on rbd map
authorIlya Dryomov <idryomov@gmail.com>
Sun, 11 Oct 2015 17:38:00 +0000 (19:38 +0200)
committerChuck Anderson <chuck.anderson@oracle.com>
Fri, 5 Feb 2016 03:28:20 +0000 (19:28 -0800)
commit5392e69beb6a654f0635d0c7ed07428ef65ae3e5
treeb4960abc13a004cf2f523c970f25db8855c9c37c
parent7be1f29db563eba108fa8bf907b457edfd4383f4
rbd: prevent kernel stack blow up on rbd map

Orabug: 22623815

commit 6d69bb536bac0d403d83db1ca841444981b280cd upstream.

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
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Josh Durgin <jdurgin@redhat.com>
[idryomov@gmail.com: backport to 4.1: rbd_dev->opts]
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 1e335cfce3d1fe07b754f2efd0781e8d58f1e675)
Signed-off-by: Dan Duval <dan.duval@oracle.com>
drivers/block/rbd.c