From 1f0c19ac6e3ae80294e2f3af5febd982f644fba4 Mon Sep 17 00:00:00 2001 From: Stefani Seibold Date: Wed, 11 Aug 2010 14:17:27 -0700 Subject: [PATCH] --- yaml --- r: 208893 b: refs/heads/master c: d78a3eda6985e74bc21a23362f27526f73e71649 h: refs/heads/master i: 208891: 314f3c1c7763f1b50db53a20a1c2cde101a3c2b9 v: v3 --- [refs] | 2 +- trunk/kernel/kfifo.c | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index 9f26934de096..0b528fd15b62 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5af568cbd55f60b5a1d174f621b273e4f585dc35 +refs/heads/master: d78a3eda6985e74bc21a23362f27526f73e71649 diff --git a/trunk/kernel/kfifo.c b/trunk/kernel/kfifo.c index 02192dd905cc..4502604ecadf 100644 --- a/trunk/kernel/kfifo.c +++ b/trunk/kernel/kfifo.c @@ -10,7 +10,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -333,17 +333,16 @@ static int setup_sgl_buf(struct scatterlist *sgl, void *buf, buf += PAGE_SIZE; npage = virt_to_page(buf); if (page_to_phys(page) != page_to_phys(npage) - l) { - sgl->page_link = 0; - sg_set_page(sgl++, page, l - off, off); - if (++n == nents) + sg_set_page(sgl, page, l - off, off); + sgl = sg_next(sgl); + if (++n == nents || sgl == NULL) return n; page = npage; len -= l - off; l = off = 0; } } - sgl->page_link = 0; - sg_set_page(sgl++, page, len, off); + sg_set_page(sgl, page, len, off); return n + 1; } @@ -363,7 +362,7 @@ static unsigned int setup_sgl(struct __kfifo *fifo, struct scatterlist *sgl, } l = min(len, size - off); - n = setup_sgl_buf(sgl, fifo->data + off, nents, l); + n = setup_sgl_buf(sgl, fifo->data + off, nents, l); n += setup_sgl_buf(sgl + n, fifo->data, nents - n, len - l); if (n)