2002-02-28 20:35:02

by Martin Wilck

[permalink] [raw]
Subject: ioperm() / iopl() irritation


A short question that may be dumb:

In the docs on i386 IO protection that I know, it is said that
the processor ANDs the two protection mechanisms offered by the
IOPL flag and the io permission bitmap. That is, if IO permissions
are granted through iopl(), but ports are masked in the IO permission
bitmap, a segmentation fault should arise.

Such a situation should be generated by code like this:

iopl(3);
ioperm (0,0x1f,1); /* 0x20-0x3ff remain masked */
c = inb (0x20);

However on my machine this codse is successful! How is that possible?
(If the iopl() statement is commented out, the code segfaults of course).

Martin

--
Martin Wilck Phone: +49 5251 8 15113
Fujitsu Siemens Computers Fax: +49 5251 8 20409
Heinz-Nixdorf-Ring 1 mailto:[email protected]
D-33106 Paderborn http://www.fujitsu-siemens.com/primergy







2002-02-28 23:57:26

by H. Peter Anvin

[permalink] [raw]
Subject: Re: ioperm() / iopl() irritation

Followup to: <[email protected]>
By author: Martin Wilck <[email protected]>
In newsgroup: linux.dev.kernel
>
> A short question that may be dumb:
>
> In the docs on i386 IO protection that I know, it is said that
> the processor ANDs the two protection mechanisms offered by the
> IOPL flag and the io permission bitmap. That is, if IO permissions
> are granted through iopl(), but ports are masked in the IO permission
> bitmap, a segmentation fault should arise.
>

Wrong.

> Such a situation should be generated by code like this:
>
> iopl(3);
> ioperm (0,0x1f,1); /* 0x20-0x3ff remain masked */
> c = inb (0x20);
>
> However on my machine this codse is successful! How is that possible?

Because you have misunderstood how IOPL works.

-hpa
--
<[email protected]> at work, <[email protected]> in private!
"Unix gives you enough rope to shoot yourself in the foot."
http://www.zytor.com/~hpa/puzzle.txt <[email protected]>

2002-03-01 10:47:13

by Martin Wilck

[permalink] [raw]
Subject: Re: ioperm() / iopl() irritation

Peter H. Anvin wrote:

> Because you have misunderstood how IOPL works.

Found that meanwhile, too. However I have two different text books
(one of them O'Reilly's "Understanding the Linux Kernel") that describe
the mechanism very clearly as I had (wrongly) understood it before.

Thanks for clearing this up, anyway.

Martin

--
Martin Wilck Phone: +49 5251 8 15113
Fujitsu Siemens Computers Fax: +49 5251 8 20409
Heinz-Nixdorf-Ring 1 mailto:[email protected]
D-33106 Paderborn http://www.fujitsu-siemens.com/primergy