Marcelo, in 2.4.19-pre1 the changelog said that the shmdt fix was
included, but it is still failing the LTP testcase that found this
problem. There is a small, but important set of {}'s that got missed,
so it is still always returning 0 even if there is nothing to detach.
The attached diff will clean this up on 2.4.19-pre3.
Thanks,
Paul Larson
diff -Naur linux/ipc/shm.c linux-shmdt/ipc/shm.c
--- linux/ipc/shm.c Fri Mar 15 15:13:07 2002
+++ linux-shmdt/ipc/shm.c Fri Mar 15 15:16:21 2002
@@ -678,9 +678,10 @@
for (shmd = mm->mmap; shmd; shmd = shmdnext) {
shmdnext = shmd->vm_next;
if (shmd->vm_ops == &shm_vm_ops
- && shmd->vm_start - (shmd->vm_pgoff << PAGE_SHIFT) == (ulong) shmaddr)
+ && shmd->vm_start - (shmd->vm_pgoff << PAGE_SHIFT) == (ulong) shmaddr) {
do_munmap(mm, shmd->vm_start, shmd->vm_end - shmd->vm_start);
retval = 0;
+ }
}
up_write(&mm->mmap_sem);
return retval;
Paul,
This patch is already included in my latest tree.
Thanks!
On 15 Mar 2002, Paul Larson wrote:
>
> Marcelo, in 2.4.19-pre1 the changelog said that the shmdt fix was
> included, but it is still failing the LTP testcase that found this
> problem. There is a small, but important set of {}'s that got missed,
> so it is still always returning 0 even if there is nothing to detach.
> The attached diff will clean this up on 2.4.19-pre3.
>
> Thanks,
> Paul Larson
>
>
> diff -Naur linux/ipc/shm.c linux-shmdt/ipc/shm.c
> --- linux/ipc/shm.c Fri Mar 15 15:13:07 2002
> +++ linux-shmdt/ipc/shm.c Fri Mar 15 15:16:21 2002
> @@ -678,9 +678,10 @@
> for (shmd = mm->mmap; shmd; shmd = shmdnext) {
> shmdnext = shmd->vm_next;
> if (shmd->vm_ops == &shm_vm_ops
> - && shmd->vm_start - (shmd->vm_pgoff << PAGE_SHIFT) == (ulong) shmaddr)
> + && shmd->vm_start - (shmd->vm_pgoff << PAGE_SHIFT) == (ulong) shmaddr) {
> do_munmap(mm, shmd->vm_start, shmd->vm_end - shmd->vm_start);
> retval = 0;
> + }
> }
> up_write(&mm->mmap_sem);
> return retval;
>