From: donmilos Date: Mon, 4 Nov 2002 21:25:49 +0000 (+0000) Subject: Bug# 329: Approver: Andreas - obd_ioctl_unpack() causes segmentation violation. X-Git-Tag: 0.5.16~27 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=3b881361e0197070f25b7ab4d2324f1c4a299e52;p=fs%2Flustre-release.git Bug# 329: Approver: Andreas - obd_ioctl_unpack() causes segmentation violation. --- diff --git a/lustre/include/linux/lustre_lib.h b/lustre/include/linux/lustre_lib.h index f3f59b9..2588154 100644 --- a/lustre/include/linux/lustre_lib.h +++ b/lustre/include/linux/lustre_lib.h @@ -334,9 +334,15 @@ static inline int obd_ioctl_unpack(struct obd_ioctl_data *data, char *pbuf, char *ptr; struct obd_ioctl_data *overlay; - if (!*pbuf) + if (!pbuf) return 1; overlay = (struct obd_ioctl_data *)pbuf; + + /* Preserve the caller's buffer pointers */ + overlay->ioc_inlbuf1 = data->ioc_inlbuf1; + overlay->ioc_inlbuf2 = data->ioc_inlbuf2; + overlay->ioc_inlbuf3 = data->ioc_inlbuf3; + memcpy(data, pbuf, sizeof(*data)); ptr = overlay->ioc_bulk;