userns: Don't read extents twice in m_start
This is important so reading /proc/<pid>/{uid_map,gid_map,projid_map} while the map is being written does not do strange things. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
This commit is contained in:
Родитель
3edf652fa1
Коммит
d5e7b3c5f5
|
@ -683,11 +683,13 @@ static void *m_start(struct seq_file *seq, loff_t *ppos,
|
|||
struct uid_gid_map *map)
|
||||
{
|
||||
loff_t pos = *ppos;
|
||||
unsigned extents = map->nr_extents;
|
||||
smp_rmb();
|
||||
|
||||
if (pos >= map->nr_extents)
|
||||
if (pos >= extents)
|
||||
return NULL;
|
||||
|
||||
if (map->nr_extents <= UID_GID_MAP_MAX_BASE_EXTENTS)
|
||||
if (extents <= UID_GID_MAP_MAX_BASE_EXTENTS)
|
||||
return &map->extent[pos];
|
||||
|
||||
return &map->forward[pos];
|
||||
|
|
Загрузка…
Ссылка в новой задаче