while (len > 2) { /* There may be one byte for padding somewhere */ rr = (struct rock_ridge *) chr; 
while (len > 2) {	/* There may be one byte for padding somewhere */ rr = (struct rock_ridge *)chr; 
static int rock_ridge_symlink_readpage(struct file *file, struct page *page){	struct inode *inode = page->mapping->host;        struct iso_inode_info *ei = ISOFS_I(inode);	char *link = kmap(page);	unsigned long bufsize = ISOFS_BUFFER_SIZE(inode);	struct buffer_head *bh;	char *rpnt = link;	unsigned char *pnt;	struct iso_directory_record *raw_inode;	CONTINUE_DECLS;	unsigned long block, offset;	int sig;	int len;	unsigned char *chr;	struct rock_ridge *rr;	if (!ISOFS_SB(inode->i_sb)->s_rock)		goto error;	block = ei->i_iget5_block;	lock_kernel();	bh = sb_bread(inode->i_sb, block);	if (!bh)		goto out_noread;        offset = ei->i_iget5_offset;	pnt = (unsigned char *) bh->b_data + offset;	raw_inode = (struct iso_directory_record *) pnt;	/*	 * If we go past the end of the buffer, there is some sort of error.	 */	if (offset + *pnt > bufsize)		goto out_bad_span;	/* Now test for possible Rock Ridge extensions which will override	   some of these numbers in the inode structure. */	SETUP_ROCK_RIDGE(raw_inode, chr, len);      repeat:	while (len > 2) { /* There may be one byte for padding somewhere */		rr = (struct rock_ridge *) chr;		if (rr->len < 3)			goto out;	/* Something got screwed up here */		sig = isonum_721(chr);		chr += rr->len;		len -= rr->len;		if (len < 0)			goto out;	/* corrupted isofs */		switch (sig) {		case SIG('R', 'R'):			if ((rr->u.RR.flags[0] & RR_SL) == 0)				goto out;			break;		case SIG('S', 'P'):			CHECK_SP(goto out);			break;		case SIG('S', 'L'):			rpnt = get_symlink_chunk(rpnt, rr,						 link + (PAGE_SIZE - 1));			if (rpnt == NULL)				goto out;			break;		case SIG('C', 'E'):			/* This tells is if there is a continuation record */			CHECK_CE;		default:			break;		}	}	MAYBE_CONTINUE(repeat, inode);	if (buffer)		kfree(buffer);	if (rpnt == link)		goto fail;	brelse(bh);	*rpnt = '\0';	unlock_kernel();	SetPageUptodate(page);	kunmap(page);	unlock_page(page);	return 0;	/* error exit from macro */      out:	if (buffer)		kfree(buffer);	goto fail;      out_noread:	printk("unable to read i-node block");	goto fail;      out_bad_span:	printk("symlink spans iso9660 blocks\n");      fail:	brelse(bh);	unlock_kernel();      error:	SetPageError(page);	kunmap(page);	unlock_page(page);	return -EIO;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/1d372116383f79e42a3eb010c7d6ec3dd28767b3/rock.c/clean/fs/isofs/rock.c