Messages in this thread | | | From | Eric Dumazet <> | Subject | Re: [PATCH] unserialized task->files changing | Date | Tue, 8 Aug 2006 12:23:09 +0200 |
| |
On Tuesday 08 August 2006 12:12, Christoph Hellwig wrote: > On Tue, Aug 08, 2006 at 02:07:49PM +0400, Kirill Korotaev wrote: > > Fixed race on put_files_struct on exec with proc. > > Restoring files on current on error path may lead > > to proc having a pointer to already kfree-d files_struct. > > This is three times the exact same code sequence, it should probably go > into a helper: > > void reset_current_files(struct files_struct *files) > { > struct files_struct *old = current->files; > > task_lock(current); > current->files = files; > task_unlock(current); > put_files_struct(old); > }
More over I think you want to task_lock() before reading current->files into 'old'
task_lock(current); old = current->files; current->files = files; task_unlock(current); put_files_struct(old);
or maybe a xchg() ?
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |