usbehci: avoid kproc() while holding poll lock

This commit is contained in:
cinap_lenrek 2020-05-24 02:11:37 +02:00
parent a54804ed24
commit 3869d7a843

View file

@ -2278,13 +2278,16 @@ pollcheck(Hci *hp)
if(poll->must != 0 && poll->does == 0){ if(poll->must != 0 && poll->does == 0){
lock(poll); lock(poll);
if(poll->must != 0 && poll->does == 0){ if(poll->must == 0 || poll->does != 0) {
unlock(poll);
return;
}
poll->does++; poll->does++;
unlock(poll);
print("ehci %#p: polling\n", ctlr->capio); print("ehci %#p: polling\n", ctlr->capio);
kproc("ehcipoll", ehcipoll, hp); kproc("ehcipoll", ehcipoll, hp);
} }
unlock(poll);
}
} }
static int static int