Re: [2.6.33-rc5] starting emacs makes lockdep warning
From: Eric W. Biederman
Date: Tue Jan 26 2010 - 04:14:48 EST
AmÃrico Wang <xiyou.wangcong@xxxxxxxxx> writes:
> On Tue, Jan 26, 2010 at 3:45 PM, KOSAKI Motohiro
> <kosaki.motohiro@xxxxxxxxxxxxxx> wrote:
>> Hi
>>
>>> On Tue, Jan 26, 2010 at 02:01:12PM +0800, Am??rico Wang wrote:
>>>
>>> > I agree, it seems that patch is useless, since we already
>>> > do lock_kernel() before calling __f_setown()...
>>>
>>> What's to prevent pid from being freed under us? ÂBKL won't...
>>
>> I don't understand this issue at all. so, this is stupid dumb question.
>> Why can't we write following code?
>>
>>
>> Â Â Â Â Â Â Â Âenum pid_type type;
>> Â Â Â Â Â Â Â Âstruct pid *pid;
>> Â Â Â Â Â Â Â Âif (!waitqueue_active(&tty->read_wait))
>> Â Â Â Â Â Â Â Â Â Â Â Âtty->minimum_to_wake = 1;
>> Â Â Â Â Â Â Â Âspin_lock_irqsave(&tty->ctrl_lock, flags);
>> Â Â Â Â Â Â Â Âif (tty->pgrp) {
>> Â Â Â Â Â Â Â Â Â Â Â Âpid = tty->pgrp;
>> Â Â Â Â Â Â Â Â Â Â Â Âtype = PIDTYPE_PGID;
>> Â Â Â Â Â Â Â Â} else {
>> Â Â Â Â Â Â Â Â Â Â Â Âpid = task_pid(current);
>> Â Â Â Â Â Â Â Â Â Â Â Âtype = PIDTYPE_PID;
>> Â Â Â Â Â Â Â Â}
>> Â Â Â Â Â Â Â Âget_pid(pid) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â// insert here
>> Â Â Â Â Â Â Â Âspin_unlock_irqrestore(&tty->ctrl_lock, flags);
>> Â Â Â Â Â Â Â Âretval = __f_setown(filp, pid, type, 0);
>> Â Â Â Â Â Â Â Âput_pid(pid) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â// insert here
>>
>
> Yeah, this seems reasonable for me, but not sure if this is the best fix.
That or tweak __f_setown to use irqsave/irqrestore variants for it's
locks, __f_setown is already atomic. I prefer that direction because the
code is just a little simpler.
Eric
èº{.nÇ+·®+%Ëlzwm
ébëæìr¸zX§»®w¥{ayºÊÚë,j¢f£¢·hàz¹®w¥¢¸¢·¦j:+v¨wèjØm¶ÿ¾«êçzZ+ùÝj"ú!¶iOæ¬z·vØ^¶m§ÿðÃnÆàþY&