From 3b881361e0197070f25b7ab4d2324f1c4a299e52 Mon Sep 17 00:00:00 2001 From: donmilos Date: Mon, 4 Nov 2002 21:25:49 +0000 Subject: [PATCH] Bug# 329: Approver: Andreas - obd_ioctl_unpack() causes segmentation violation. --- lustre/include/linux/lustre_lib.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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; -- 1.8.3.1