| From 494ddd11be3e2621096bb425eed2886f8e8446d4 Mon Sep 17 00:00:00 2001 |
| From: majianpeng <majianpeng@gmail.com> |
| Date: Tue, 16 Jul 2013 19:36:21 +0800 |
| Subject: ceph: Don't forget the 'up_read(&osdc->map_sem)' if met error. |
| |
| From: majianpeng <majianpeng@gmail.com> |
| |
| commit 494ddd11be3e2621096bb425eed2886f8e8446d4 upstream. |
| |
| Signed-off-by: Jianpeng Ma <majianpeng@gmail.com> |
| Reviewed-by: Sage Weil <sage@inktank.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/ceph/ioctl.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/fs/ceph/ioctl.c |
| +++ b/fs/ceph/ioctl.c |
| @@ -196,8 +196,10 @@ static long ceph_ioctl_get_dataloc(struc |
| r = ceph_calc_file_object_mapping(&ci->i_layout, dl.file_offset, len, |
| &dl.object_no, &dl.object_offset, |
| &olen); |
| - if (r < 0) |
| + if (r < 0) { |
| + up_read(&osdc->map_sem); |
| return -EIO; |
| + } |
| dl.file_offset -= dl.object_offset; |
| dl.object_size = ceph_file_layout_object_size(ci->i_layout); |
| dl.block_size = ceph_file_layout_su(ci->i_layout); |