diff options
| author | Robert Richter <robert.richter@amd.com> | 2010-10-11 13:26:50 -0400 |
|---|---|---|
| committer | Robert Richter <robert.richter@amd.com> | 2010-10-11 13:26:50 -0400 |
| commit | ad0f7cfaa85fc033523a09ab1f3dd6b8ded3dff5 (patch) | |
| tree | 2565121e4b9945d953e02c77a2e53065b3789aa4 /lib/scatterlist.c | |
| parent | 86c8c04792f152c5469023885510140dd34817bc (diff) | |
| parent | c7a27aa4652c63172489a73f3961455650a79a7f (diff) | |
Merge branch 'oprofile/urgent' (early part) into oprofile/perf
Diffstat (limited to 'lib/scatterlist.c')
| -rw-r--r-- | lib/scatterlist.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/scatterlist.c b/lib/scatterlist.c index a5ec42868f99..4ceb05d772ae 100644 --- a/lib/scatterlist.c +++ b/lib/scatterlist.c | |||
| @@ -248,8 +248,18 @@ int __sg_alloc_table(struct sg_table *table, unsigned int nents, | |||
| 248 | left -= sg_size; | 248 | left -= sg_size; |
| 249 | 249 | ||
| 250 | sg = alloc_fn(alloc_size, gfp_mask); | 250 | sg = alloc_fn(alloc_size, gfp_mask); |
| 251 | if (unlikely(!sg)) | 251 | if (unlikely(!sg)) { |
| 252 | return -ENOMEM; | 252 | /* |
| 253 | * Adjust entry count to reflect that the last | ||
| 254 | * entry of the previous table won't be used for | ||
| 255 | * linkage. Without this, sg_kfree() may get | ||
| 256 | * confused. | ||
| 257 | */ | ||
| 258 | if (prv) | ||
| 259 | table->nents = ++table->orig_nents; | ||
| 260 | |||
| 261 | return -ENOMEM; | ||
| 262 | } | ||
| 253 | 263 | ||
| 254 | sg_init_table(sg, alloc_size); | 264 | sg_init_table(sg, alloc_size); |
| 255 | table->nents = table->orig_nents += sg_size; | 265 | table->nents = table->orig_nents += sg_size; |
