mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-23 21:51:27 +00:00
Patch from Krzysztof Blaszkowski with some cleanups:
I realized yesterday that the fix missed one rare case still. if the hiwmk_check() returned with error and no_fail override was set then the counter would still cross 0 on free. git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@677 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
@@ -899,7 +899,14 @@ struct scatterlist *scst_alloc(int size, gfp_t gfp_mask, int *count)
|
|||||||
if (!no_fail) {
|
if (!no_fail) {
|
||||||
res = NULL;
|
res = NULL;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
} else {
|
||||||
|
/*
|
||||||
|
* Update active_pages_total since alloc can't fail.
|
||||||
|
* If it wasn't updated then the counter would cross 0
|
||||||
|
* on free again.
|
||||||
|
*/
|
||||||
|
sgv_pool_hiwmk_uncheck(-pages);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
res = kmalloc(pages*sizeof(*res), gfp_mask);
|
res = kmalloc(pages*sizeof(*res), gfp_mask);
|
||||||
@@ -1007,7 +1014,6 @@ int sgv_pool_init(struct sgv_pool *pool, const char *name,
|
|||||||
sizeof(obj->trans_tbl[0]) : 0));
|
sizeof(obj->trans_tbl[0]) : 0));
|
||||||
} else {
|
} else {
|
||||||
size = sizeof(*obj);
|
size = sizeof(*obj);
|
||||||
|
|
||||||
/* both sgv and ttbl are kallocated() */
|
/* both sgv and ttbl are kallocated() */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user