lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 17 May 2007 12:07:01 -0400
From:	Phillip Susi <psusi@....rr.com>
To:	Dong Feng <middle.fengdong@...il.com>
CC:	pradeep singh <2500.pradeep@...il.com>,
	Bahadir Balban <bahadir.balban@...il.com>,
	Learning Linux <learninglinux4@...il.com>,
	kernelnewbies@...linux.org, linux-newbie@...r.kernel.org,
	linux-kernel@...r.kernel.org
Subject: Re: Why can't we sleep in an ISR?

Dong Feng wrote:
> OK. I think the gap between you and me is the definition of term
> *context*. If you go to Linux Kernel Development, 2nd Edition (ISBN
> 0-672-32720-1), Page 6, then you will read the following:
> 
> ....  in Linux, ... each processor is doing one of three things at any
> given moment:
> 
> 1. In kernel-space, in process context, ...
> 2. In kernel-space, in interrupt context, not associated with a process, 
> ...
> 3. In user-space ...
> 
> This list is inclusive. ...

Yep, I disagree with that use of the term, because it is misleading and 
caused your confusion.  The context that the ISR executes in is not 
associated with a _known_ process is more correct.

> Maybe you prefer other terminology system, but I do like the above
> definition given by Robert Love. So maybe in your system *context*
> mean something at hardware level and you say ISR is in process
> context, but I think it is more like a logical level and agree with
> Rovert's definition.
> 
> And in hardware level, Robert's *context* definition also mean
> something specific, that I started to be aware of. That is, *in the
> same context* means a kernel-code is triggered by a user-space code.
> *in different context* means a kernel-code is triggered by an external
> interrupt source other than a user-space code.

Right, and that becomes more clear when you say that the ISR's is 
executing in an indeterminate process context, rather than saying it 
does not have any context at all, or has its own special context.

> Context has nothing to do with whether an ISR borrow any data
> structure of a process, instead, its something logical or related to
> causality.

No, it has everything to do with the data structures of the process. 
When you are executing "in the same context" as you put it, as called 
from the user mode code, you know you are using the task structure of 
that process and so you can make use of that structure.  For example, 
you can look at the current uid to decide if you should allow an 
operation to proceed.  When you are in an ISR, there _is_ a task 
structure there, but you shouldn't use it because you don't know which 
task structure it is because you don't know which task you are 
interrupting.  Thus if you look at the current uid in an ISR, you have 
no idea what you will see there and it will change from interrupt to 
interrupt, depending on which task gets interrupted.


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ