[PATCH] LVM fixes.
authorDave Jones <davej@suse.de>
Tue, 19 Feb 2002 09:22:48 +0000 (01:22 -0800)
committerDave Jones <davej@suse.de>
Tue, 19 Feb 2002 09:22:48 +0000 (01:22 -0800)
commit24f27632f4867952eacadfe3209631adcb46202b
tree6e520aab00a45379ca03769ed729821140296e6c
parent4d32c6ba21d27f2db9e09ec196d12a2456c32048
[PATCH] LVM fixes.

Numerous LVM fixes & cleanups.
Gets things compiling again, and allegedly works according to feedback.
Mostly from Anders in absence of any maintainence by LVM people.

There are two critical problems with lvm in 2.5.2-pre11 (and earlier).
* ioctls on the chardev allocates a >4k lv_t on stack. if the ioctl is
LV_CREATE, LV_EXTEND, LV_REDUCE or LV_RENAME data is copied into this
and the task_struct will most certainly be corrupted.
* sizeof(lv_t) differs between user and kernelspace. The userspace version
of the lv_t structure is much smaller than the kernelspace version. This
leads to corruption of memory in the userspace application when an lv_t is
copied from kernelspace to userspace, as in "vgdisplay -v"

The following patch addresses these two issues. It puts the user-space
version of the lv_t into a substructure of the kernelspace version. When
communicating to userspace just the userlv_t part is used. This avoids the
allocation of the lv_t on the stack by allocation just a userlv_t instead.
drivers/md/lvm-fs.c
drivers/md/lvm-snap.c
drivers/md/lvm.c