kfree (read_buf); 
kfree(read_buf); 
jffs_checksum_flash(struct mtd_info *mtd, loff_t start, int size, __u32 *result){	__u32 sum = 0;	loff_t ptr = start;	__u8 *read_buf;	int i, length;	/* Allocate read buffer */	read_buf = (__u8 *) kmalloc (sizeof(__u8) * 4096, GFP_KERNEL);	if (!read_buf) {		printk(KERN_NOTICE "kmalloc failed in jffs_checksum_flash()\n");		return -ENOMEM;	}	/* Loop until checksum done */	while (size) {		/* Get amount of data to read */		if (size < 4096)			length = size;		else			length = 4096;		/* Perform flash read */		D3(printk(KERN_NOTICE "jffs_checksum_flash\n"));		flash_safe_read(mtd, ptr, &read_buf[0], length);		/* Compute checksum */		for (i=0; i < length ; i++)			sum += read_buf[i];		/* Update pointer and size */		size -= length;		ptr += length;	}	/* Free read buffer */	kfree (read_buf);	/* Return result */	D3(printk("checksum result: 0x%08x\n", sum));	*result = sum;	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/f99d49adf527fa6f7a9c42257fa76bca6b8df1e3/intrep.c/clean/fs/jffs/intrep.c