diff -urN linux-2.4.3-XFS.orig/fs/pagebuf/page_buf.c linux-2.4.3-XFS/fs/pagebuf/page_buf.c --- linux-2.4.3-XFS.orig/fs/pagebuf/page_buf.c Sat Apr 7 11:34:41 2001 +++ linux-2.4.3-XFS/fs/pagebuf/page_buf.c Sun Apr 8 08:49:15 2001 @@ -1934,7 +1934,12 @@ /* Success case - we are done */ buffer_offset += kb->length; buffer_len -= kb->length; - goto out; + pagebuf_rele(pb); + + if (!status) + status = total; + + return (status); } else { /* Failure, either try again, or fall back * to the buffer head path. @@ -1971,7 +1976,12 @@ if (sval <= 0) { status = sval; - goto out; + pagebuf_rele(pb); + + if (!status) + status = total; + + return (status); } else { len = sval; total += len; @@ -1980,14 +1990,6 @@ buffer_offset += len; buffer_len -= len; } - -out: - pagebuf_rele(pb); - - if (!status) - status = total; - - return (status); } /*