⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1011.udf.patch

📁 sm86xx内核源包括补丁( GPL )的
💻 PATCH
📖 第 1 页 / 共 5 页
字号:
-			tmp = udf_tgetblk(dir->i_sb, block);-			if (tmp && !buffer_uptodate(tmp) && !buffer_locked(tmp))-				bha[num++] = tmp;-			else-				brelse(tmp);-		}-		if (num)-		{-			ll_rw_block(READA, num, bha);-			for (i=0; i<num; i++)-				brelse(bha[i]);-		}-	}- 	while ( nf_pos < size ) 	{ 		filp->f_pos = nf_pos + 1;@@ -228,7 +237,9 @@ 		} 		else 		{-			iblock = udf_get_lb_pblock(dir->i_sb, lelb_to_cpu(cfi.icb.extLocation), 0);+			lb_addr tloc = lelb_to_cpu(cfi.icb.extLocation);++			iblock = udf_get_lb_pblock(dir->i_sb, tloc, 0); 			flen = udf_get_filename(dir->i_sb, nameptr, fname, lfi); 			dt_type = DT_UNKNOWN; 		}diff -Naur --exclude=CVS --exclude='*.o' --exclude='*.a' --exclude='*.so' --exclude='*.elf' --exclude=System.map --exclude=Makefile.d --exclude='*log' --exclude='*log2' --exclude='*~' --exclude='.*~' --exclude='.#*' --exclude='*.bak' --exclude='*.orig' --exclude='*.rej' --exclude='core.[0-9]*' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=vmlinux --exclude=vmlinux.bin --exclude=yamon-02.06-SIGMADESIGNS-01_el.bin linuxmips-2.4.30.ref/fs/udf/directory.c linuxmips-2.4.30/fs/udf/directory.c--- linuxmips-2.4.30.ref/fs/udf/directory.c	2002-06-26 15:36:22.000000000 -0700+++ linuxmips-2.4.30/fs/udf/directory.c	2007-05-10 10:49:29.000000000 -0700@@ -17,6 +17,7 @@  */  #include "udfdecl.h"+#include "udf_i.h"  #include <linux/fs.h> #include <linux/string.h>@@ -84,6 +85,24 @@  	fibh->soffset = fibh->eoffset; +	if (UDF_I_ALLOCTYPE(dir) == ICBTAG_FLAG_AD_IN_ICB)+	{+		fi = udf_get_fileident(UDF_I_DATA(dir) -+			(UDF_I_EFE(dir) ?+				sizeof(struct extendedFileEntry) :+				sizeof(struct fileEntry)),+			dir->i_sb->s_blocksize, &(fibh->eoffset));++		if (!fi)+			return NULL;++		*nf_pos += ((fibh->eoffset - fibh->soffset) >> 2);++		memcpy((uint8_t *)cfi, (uint8_t *)fi, sizeof(struct fileIdentDesc));++		return fi;+	}+ 	if (fibh->eoffset == dir->i_sb->s_blocksize) 	{ 		int lextoffset = *extoffset;@@ -275,53 +294,43 @@ }  short_ad *-udf_get_fileshortad(void * buffer, int maxoffset, int *offset, int inc)+udf_get_fileshortad(uint8_t *ptr, int maxoffset, int *offset, int inc) {-	short_ad * sa;-	uint8_t * ptr;+	short_ad *sa; -	if ( (!buffer) || (!offset) )+	if ( (!ptr) || (!offset) ) 	{ 		printk(KERN_ERR "udf: udf_get_fileshortad() invalidparms\n"); 		return NULL; 	} -	ptr = (uint8_t *)buffer;--	if ( (*offset > 0) && (*offset < maxoffset) )-		ptr += *offset;-	else+	if ( (*offset < 0) || ((*offset + sizeof(short_ad)) > maxoffset) ) 		return NULL;--	if ((sa = (short_ad *)ptr)->extLength == 0)+	else if ((sa = (short_ad *)ptr)->extLength == 0) 		return NULL;-	else if (inc)-		(*offset) += sizeof(short_ad);++	if (inc)+		*offset += sizeof(short_ad); 	return sa; }  long_ad *-udf_get_filelongad(void * buffer, int maxoffset, int * offset, int inc)+udf_get_filelongad(uint8_t *ptr, int maxoffset, int * offset, int inc) {-	long_ad * la;-	uint8_t * ptr;+	long_ad *la; -	if ( (!buffer) || !(offset) ) +	if ( (!ptr) || (!offset) )  	{ 		printk(KERN_ERR "udf: udf_get_filelongad() invalidparms\n"); 		return NULL; 	} -	ptr = (uint8_t *)buffer;--	if ( (*offset > 0) && (*offset < maxoffset) )-		ptr += *offset;-	else+	if ( (*offset < 0) || ((*offset + sizeof(long_ad)) > maxoffset) ) 		return NULL;--	if ((la = (long_ad *)ptr)->extLength == 0)+	else if ((la = (long_ad *)ptr)->extLength == 0) 		return NULL;-	else if (inc)-		(*offset) += sizeof(long_ad);++	if (inc)+		*offset += sizeof(long_ad); 	return la; }diff -Naur --exclude=CVS --exclude='*.o' --exclude='*.a' --exclude='*.so' --exclude='*.elf' --exclude=System.map --exclude=Makefile.d --exclude='*log' --exclude='*log2' --exclude='*~' --exclude='.*~' --exclude='.#*' --exclude='*.bak' --exclude='*.orig' --exclude='*.rej' --exclude='core.[0-9]*' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=vmlinux --exclude=vmlinux.bin --exclude=yamon-02.06-SIGMADESIGNS-01_el.bin linuxmips-2.4.30.ref/fs/udf/ecma_167.h linuxmips-2.4.30/fs/udf/ecma_167.h--- linuxmips-2.4.30.ref/fs/udf/ecma_167.h	2002-06-26 15:36:22.000000000 -0700+++ linuxmips-2.4.30/fs/udf/ecma_167.h	2007-05-10 10:49:29.000000000 -0700@@ -4,7 +4,7 @@  * This file is based on ECMA-167 3rd edition (June 1997)  * http://www.ecma.ch  *- * Copyright (c) 2001-2002  Ben Fennema <bfennema@falcon.csc.calpoly.edu>+ * Copyright (c) 2001-2003  Ben Fennema <bfennema@falcon.csc.calpoly.edu>  * All rights reserved.  *  * Redistribution and use in source and binary forms, with or without@@ -606,7 +606,7 @@ #define FE_RECORD_FMT_CRLF		0x0A #define FE_RECORD_FMT_LFCR		0x0B -#define Record Display Attributes (ECMA 167r3 4/14.9.8) */+/* Record Display Attributes (ECMA 167r3 4/14.9.8) */ #define FE_RECORD_DISPLAY_ATTR_UNDEF	0x00 #define FE_RECORD_DISPLAY_ATTR_1	0x01 #define FE_RECORD_DISPLAY_ATTR_2	0x02diff -Naur --exclude=CVS --exclude='*.o' --exclude='*.a' --exclude='*.so' --exclude='*.elf' --exclude=System.map --exclude=Makefile.d --exclude='*log' --exclude='*log2' --exclude='*~' --exclude='.*~' --exclude='.#*' --exclude='*.bak' --exclude='*.orig' --exclude='*.rej' --exclude='core.[0-9]*' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=vmlinux --exclude=vmlinux.bin --exclude=yamon-02.06-SIGMADESIGNS-01_el.bin linuxmips-2.4.30.ref/fs/udf/file.c linuxmips-2.4.30/fs/udf/file.c--- linuxmips-2.4.30.ref/fs/udf/file.c	2004-08-14 11:39:02.000000000 -0700+++ linuxmips-2.4.30/fs/udf/file.c	2007-05-10 10:49:29.000000000 -0700@@ -39,6 +39,7 @@ #include <linux/errno.h> #include <linux/locks.h> #include <linux/smp_lock.h>+#include <linux/pagemap.h>  #include "udf_i.h" #include "udf_sb.h"@@ -46,64 +47,36 @@ static int udf_adinicb_readpage(struct file *file, struct page * page) { 	struct inode *inode = page->mapping->host;--	struct buffer_head *bh;-	int block; 	char *kaddr;-	int err = 0;  	if (!PageLocked(page)) 		PAGE_BUG(page);  	kaddr = kmap(page); 	memset(kaddr, 0, PAGE_CACHE_SIZE);-	block = udf_get_lb_pblock(inode->i_sb, UDF_I_LOCATION(inode), 0);-	bh = sb_bread(inode->i_sb, block);-	if (!bh)-	{-		SetPageError(page);-		err = -EIO;-		goto out;-	}-	memcpy(kaddr, bh->b_data + udf_ext0_offset(inode), inode->i_size);-	brelse(bh);+	memcpy(kaddr, UDF_I_DATA(inode) + UDF_I_LENEATTR(inode), inode->i_size); 	flush_dcache_page(page); 	SetPageUptodate(page);-out: 	kunmap(page);-	UnlockPage(page);-	return err;+	unlock_page(page);+	return 0; }  static int udf_adinicb_writepage(struct page *page) { 	struct inode *inode = page->mapping->host;--	struct buffer_head *bh;-	int block; 	char *kaddr;-	int err = 0;  	if (!PageLocked(page)) 		PAGE_BUG(page);  	kaddr = kmap(page);-	block = udf_get_lb_pblock(inode->i_sb, UDF_I_LOCATION(inode), 0);-	bh = sb_bread(inode->i_sb, block);-	if (!bh)-	{-		SetPageError(page);-		err = -EIO;-		goto out;-	}-	memcpy(bh->b_data + udf_ext0_offset(inode), kaddr, inode->i_size);-	mark_buffer_dirty(bh);-	brelse(bh);+	memcpy(UDF_I_DATA(inode) + UDF_I_LENEATTR(inode), kaddr, inode->i_size);+	mark_inode_dirty(inode); 	SetPageUptodate(page);-out: 	kunmap(page);-	UnlockPage(page);-	return err;+	unlock_page(page);+	return 0; }  static int udf_adinicb_prepare_write(struct file *file, struct page *page, unsigned offset, unsigned to)@@ -115,39 +88,25 @@ static int udf_adinicb_commit_write(struct file *file, struct page *page, unsigned offset, unsigned to) { 	struct inode *inode = page->mapping->host;--	struct buffer_head *bh;-	int block; 	char *kaddr = page_address(page);-	int err = 0; -	block = udf_get_lb_pblock(inode->i_sb, UDF_I_LOCATION(inode), 0);-	bh = sb_bread(inode->i_sb, block);-	if (!bh)-	{-		SetPageError(page);-		err = -EIO;-		goto out;-	}-	memcpy(bh->b_data + udf_file_entry_alloc_offset(inode) + offset,+	memcpy(UDF_I_DATA(inode) + UDF_I_LENEATTR(inode) + offset, 		kaddr + offset, to - offset);-	mark_buffer_dirty(bh);-	brelse(bh);+	mark_inode_dirty(inode); 	SetPageUptodate(page);-out: 	kunmap(page); 	/* only one page here */ 	if (to > inode->i_size) 		inode->i_size = to;-	return err;+	return 0; }  struct address_space_operations udf_adinicb_aops = {-	readpage:		udf_adinicb_readpage,-	writepage:		udf_adinicb_writepage,-	sync_page:		block_sync_page,-	prepare_write:		udf_adinicb_prepare_write,-	commit_write:		udf_adinicb_commit_write,+	.readpage		= udf_adinicb_readpage,+	.writepage		= udf_adinicb_writepage,+	.sync_page		= block_sync_page,+	.prepare_write		= udf_adinicb_prepare_write,+	.commit_write		= udf_adinicb_commit_write, };  static ssize_t udf_file_write(struct file * file, const char * buf,@@ -155,8 +114,7 @@ { 	ssize_t retval; 	struct inode *inode = file->f_dentry->d_inode;-	int err;-	loff_t pos;+	int err, pos;  	if (UDF_I_ALLOCTYPE(inode) == ICBTAG_FLAG_AD_IN_ICB) 	{@@ -165,11 +123,8 @@ 		else 			pos = *ppos; -		if (pos < 0 || pos + count < pos)-			return 0;--		if (inode->i_sb->s_blocksize - udf_file_entry_alloc_offset(inode) <-			pos + count)+		if (inode->i_sb->s_blocksize < (udf_file_entry_alloc_offset(inode) ++			pos + count)) 		{ 			udf_expand_file_adinicb(inode, pos + count, &err); 			if (UDF_I_ALLOCTYPE(inode) == ICBTAG_FLAG_AD_IN_ICB)@@ -235,9 +190,6 @@ 	unsigned long arg) { 	int result = -EINVAL;-	struct buffer_head *bh = NULL;-	long_ad eaicb;-	uint8_t *ea = NULL;  	if ( permission(inode, MAY_READ) != 0 ) 	{@@ -252,7 +204,6 @@ 		return -EINVAL; 	} -	/* first, do ioctls that don't need to udf_read */ 	switch (cmd) 	{ 		case UDF_GETVOLIDENT:@@ -270,50 +221,16 @@  			return result; 		}-	}--	/* ok, we need to read the inode */-	bh = udf_tread(inode->i_sb,-		udf_get_lb_pblock(inode->i_sb, UDF_I_LOCATION(inode), 0));--	if (!bh)-	{-		udf_debug("bread failed (inode=%ld)\n", inode->i_ino);-		return -EIO;-	}--	if (UDF_I_EXTENDED_FE(inode) == 0)-	{-		struct fileEntry *fe;--		fe = (struct fileEntry *)bh->b_data;-		eaicb = lela_to_cpu(fe->extendedAttrICB);-		if (UDF_I_LENEATTR(inode))-			ea = fe->extendedAttr;-	}-	else-	{-		struct extendedFileEntry *efe;--		efe = (struct extendedFileEntry *)bh->b_data;-		eaicb = lela_to_cpu(efe->extendedAttrICB);-		if (UDF_I_LENEATTR(inode))-			ea = efe->extendedAttr;-	}--	switch (cmd) -	{ 		case UDF_GETEASIZE: 			result = put_user(UDF_I_LENEATTR(inode), (int *)arg); 			break;  		case UDF_GETEABLOCK:-			result = copy_to_user((char *)arg, ea,+			result = copy_to_user((char *)arg, UDF_I_DATA(inode), 				UDF_I_LENEATTR(inode)) ? -EFAULT : 0; 			break; 	} -	udf_release_data(bh); 	return result; } @@ -361,15 +278,15 @@ }  struct file_operations udf_file_operations = {-	read:			generic_file_read,-	ioctl:			udf_ioctl,-	open:			udf_open_file,-	mmap:			generic_file_mmap,-	write:			udf_file_write,-	release:		udf_release_file,-	fsync:			udf_fsync_file,+	.read			= generic_file_read,+	.ioctl			= udf_ioctl,+	.open			= udf_open_file,+	.mmap			= generic_file_mmap,+	.write			= udf_file_write,+	.release		= udf_release_file,+	.fsync			= udf_fsync_file, };  struct inode_operations udf_file_inode_operations = {-	truncate:		udf_truncate,+	.truncate		= udf_truncate, };diff -Naur --exclude=CVS --exclude='*.o' --exclude='*.a' --exclude='*.so' --exclude='*.elf' --exclude=System.map --exclude=Makefile.d --exclude='*log' --exclude='*log2' --exclude='*~' --exclude='.*~' --exclude='.#*' --exclude='*.bak' --exclude='*.orig' --exclude='*.rej' --exclude='core.[0-9]*' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=vmlinux --exclude=vmlinux.bin --exclude=yamon-02.06-SIGMADESIGNS-01_el.bin linuxmips-2.4.30.ref/fs/udf/fsync.c linuxmips-2.4.30/fs/udf/fsync.c--- linuxmips-2.4.30.ref/fs/udf/fsync.c	2002-06-26 15:36:22.000000000 -0700+++ linuxmips-2.4.30/fs/udf/fsync.c	2007-05-10 10:49:29.000000000 -0700@@ -45,7 +45,9 @@ 	int err;  	err = fsync_inode_buffers(inode);+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,15) 	err |= fsync_inode_data_buffers(inode);+#endif 	if (!(inode->i_state & I_DIRTY)) 		return err; 	if (datasync && !(inode->i_state & I_DIRTY_DATASYNC))diff -Naur --exclude=CVS --exclude='*.o' --exclude='*.a' --exclude='*.so' --exclude='*.elf' --exclude=System.map --exclude=Makefile.d --exclude='*log' --exclude='*log2' --exclude='*~' --exclude='.*~' --exclude='.#*' --exclude='*.bak' --exclude='*.orig' --exclude='*.rej' --exclude='core.[0-9]*' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=.depend --exclude='.*.o.flags' --exclude='*.gz' --exclude=vmlinux --exclude=vmlinux.bin --exclude=yamon-02.06-SIGMADESIGNS-01_el.bin linuxmips-2.4.30.ref/fs/udf/ialloc.c linuxmips-2.4.30/fs/udf/ialloc.c--- linuxmips-2.4.30.ref/fs/udf/ialloc.c	2002-06-26 15:36:22.000000000 -0700+++ linuxmips-2.4.30/fs/udf/ialloc.c	2007-05-10 10:49:29.000000000 -0700@@ -28,6 +28,7 @@ #include <linux/locks.h> #include <linux/quotaops.h> #include <linux/udf_fs.h>+#include <linux/slab.h>  #include "udf_i.h" #include "udf_sb.h"@@ -44,7 +45,12 @@ 	 * Note: we must free any quota before locking the superblock, 	 * as writing the quota to disk may need the lock as well. 	 */+#ifndef OLD_QUOTA

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -