ioperm bitmap stuff for 2.4

Nuno Monteiro (nuno@itsari.org)
Sat, 17 May 2003 19:12:18 +0100


This is a MIME-formatted message. If you see this text it means that your
E-mail software does not support MIME-formatted messages.

--=_courier-31241-1053195208-0001-2
Content-Type: text/plain; format=flowed; charset=iso-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
X-Mime-Autoconverted: from 8bit to 7bit by courier 0.39

[ let's see if three is the charm, the two previous attempts didnt make
it to the list... ]

Hi people,

Is the ioperm patch necessary in 2.4 also? The fix by Brian Gerst was
commited to the 2.5 branch
(http://marc.theaimsgroup.com/?l=bk-commits-head&m=105275597307968&w=2)
some days ago, and as of yesterday vendors are starting to ship a similar
fix to their kernels, so I suppose it is indeed necessary. What about the
attached patch? It applies to both 2.4.20 and .21-rc2, please review.

(Please forgive me if this has been discussed before, I did a quick
search of the lkml archives and couldnt find anything relevant to 2.4)

Cheers,

Nuno

--=_courier-31241-1053195208-0001-2
Content-Type: text/x-diff; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="2.4-042-ioperm-fix.patch"
X-Mime-Autoconverted: from 8bit to 7bit by courier 0.39

--- linux-2.4.20-gw3/arch/i386/kernel/ioport.c 2003-05-16 23:42:47.000000000 +0100
+++ linux-2.4.20-gw4/arch/i386/kernel/ioport.c 2003-05-16 23:42:49.000000000 +0100
@@ -72,17 +72,18 @@
*/
memset(t->io_bitmap,0xff,(IO_BITMAP_SIZE+1)*4);
t->ioperm = 1;
- /*
- * this activates it in the TSS
- */
- tss->bitmap = IO_BITMAP_OFFSET;
}

/*
* do it in the per-thread copy and in the TSS ...
*/
set_bitmap(t->io_bitmap, from, num, !turn_on);
- set_bitmap(tss->io_bitmap, from, num, !turn_on);
+ if (tss->bitmap == IO_BITMAP_OFFSET) { /* already active? */
+ set_bitmap(tss->io_bitmap, from, num, !turn_on);
+ } else {
+ memcpy(tss->io_bitmap, t->io_bitmap, IO_BITMAP_SIZE);
+ tss->bitmap = IO_BITMAP_OFFSET; /* Activate it in the TSS */
+ }

return 0;
}

--=_courier-31241-1053195208-0001-2--