X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fisofs%2Frock.c;h=19d999fd450c2c7892e5ef00045482f889fbf5c1;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=c09d4bd4b55a7451782f22d413434352830233dc;hpb=a2c21200f1c81b08cb55e417b68150bba439b646;p=linux-2.6.git diff --git a/fs/isofs/rock.c b/fs/isofs/rock.c index c09d4bd4b..19d999fd4 100644 --- a/fs/isofs/rock.c +++ b/fs/isofs/rock.c @@ -62,7 +62,7 @@ } #define MAYBE_CONTINUE(LABEL,DEV) \ - {if (buffer) kfree(buffer); \ + {if (buffer) { kfree(buffer); buffer = NULL; } \ if (cont_extent){ \ int block, offset, offset1; \ struct buffer_head * pbh; \ @@ -153,14 +153,17 @@ int get_rock_ridge_filename(struct iso_directory_record * de, } } MAYBE_CONTINUE(repeat,inode); + if (buffer) kfree(buffer); return retnamlen; /* If 0, this file did not have a NM field */ out: if(buffer) kfree(buffer); return 0; } -int parse_rock_ridge_inode_internal(struct iso_directory_record * de, - struct inode * inode,int regard_xa){ +static int +parse_rock_ridge_inode_internal(struct iso_directory_record *de, + struct inode *inode, int regard_xa) +{ int len; unsigned char * chr; int symlink_len = 0; @@ -174,7 +177,7 @@ int parse_rock_ridge_inode_internal(struct iso_directory_record * de, chr+=14; len-=14; if (len<0) len=0; - }; + } repeat: { @@ -351,7 +354,6 @@ int parse_rock_ridge_inode_internal(struct iso_directory_record * de, } } MAYBE_CONTINUE(repeat,inode); - return 0; out: if(buffer) kfree(buffer); return 0; @@ -435,9 +437,9 @@ int parse_rock_ridge_inode(struct iso_directory_record * de, &&(ISOFS_SB(inode->i_sb)->s_rock==2)) { result=parse_rock_ridge_inode_internal(de,inode,14); - }; + } return result; -}; +} /* readpage() for symlinks: reads symlink contents into the page and either makes it uptodate and returns 0 or returns error (-EIO) */ @@ -515,6 +517,8 @@ static int rock_ridge_symlink_readpage(struct file *file, struct page *page) } } MAYBE_CONTINUE(repeat, inode); + if (buffer) + kfree(buffer); if (rpnt == link) goto fail;