Oleg Nesterov <oleg at tv-sign.ru> writes: > On 09/10, Eric W. Biederman wrote: >> >> Oleg Nesterov <oleg at tv-sign.ru> writes: >> >> > On 09/10, Eric W. Biederman wrote: >> >> >> >> Updating this old code is painful. >> > >> > No, no, we shouldn't change the old code, it is fine. >> > >> So what happens when: >> cpu0: cpu1: >> kill_pid(vt_pid,....) fn_SAK()->vc_reset()->put_pid(xchg(&vt_pid, NULL)) >> >> Can't kill_pid dereference vt_pid after put_pid is called? > > Ah, I didn't consider that patch as 'old code', sorry :) What I meant was that updating code that predates SMP support is painful. When you said everything was ok. I was confused. > I don't understand drivers/char/vt*, but surely put_pid(xchg()) can't work. > Again, unless we have a lock to serialize access to ->vt_pid, but in that > case we don't need xchg(). Ok. So we are in violent agreement then, my patch was wrong. The xchg half works. For taking and putting a reference it is fine, you just can't use that reference for anything safely. So I need to come up with a new patch that gets it's locking correct, in the fn_SAK case. Eric