forked from Minki/linux
gru: add comments raised in previous code reviews
Add comments from previous code reviews. The comments help explain some of the more esoteric aspects of the driver. Move a free() to the other side of an unlock. Signed-off-by: Jack Steiner <steiner@sgi.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
827f02febf
commit
091f1a1061
@ -733,6 +733,11 @@ long gru_get_gseg_statistics(unsigned long arg)
|
|||||||
if (copy_from_user(&req, (void __user *)arg, sizeof(req)))
|
if (copy_from_user(&req, (void __user *)arg, sizeof(req)))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The library creates arrays of contexts for threaded programs.
|
||||||
|
* If no gts exists in the array, the context has never been used & all
|
||||||
|
* statistics are implicitly 0.
|
||||||
|
*/
|
||||||
gts = gru_find_lock_gts(req.gseg);
|
gts = gru_find_lock_gts(req.gseg);
|
||||||
if (gts) {
|
if (gts) {
|
||||||
memcpy(&req.stats, >s->ustats, sizeof(gts->ustats));
|
memcpy(&req.stats, >s->ustats, sizeof(gts->ustats));
|
||||||
|
@ -200,13 +200,15 @@ static int gru_free_kernel_contexts(void)
|
|||||||
bs = gru_base[bid];
|
bs = gru_base[bid];
|
||||||
if (!bs)
|
if (!bs)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
/* Ignore busy contexts. Don't want to block here. */
|
||||||
if (down_write_trylock(&bs->bs_kgts_sema)) {
|
if (down_write_trylock(&bs->bs_kgts_sema)) {
|
||||||
kgts = bs->bs_kgts;
|
kgts = bs->bs_kgts;
|
||||||
if (kgts && kgts->ts_gru)
|
if (kgts && kgts->ts_gru)
|
||||||
gru_unload_context(kgts, 0);
|
gru_unload_context(kgts, 0);
|
||||||
kfree(kgts);
|
|
||||||
bs->bs_kgts = NULL;
|
bs->bs_kgts = NULL;
|
||||||
up_write(&bs->bs_kgts_sema);
|
up_write(&bs->bs_kgts_sema);
|
||||||
|
kfree(kgts);
|
||||||
} else {
|
} else {
|
||||||
ret++;
|
ret++;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user