diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/aio.h | 6 | ||||
| -rw-r--r-- | include/linux/amigaffs.h | 2 | ||||
| -rw-r--r-- | include/linux/backing-dev.h | 12 | ||||
| -rw-r--r-- | include/linux/bio.h | 1 | ||||
| -rw-r--r-- | include/linux/device.h | 1 | ||||
| -rw-r--r-- | include/linux/ext3_fs.h | 1 | ||||
| -rw-r--r-- | include/linux/file.h | 3 | ||||
| -rw-r--r-- | include/linux/fs.h | 5 | ||||
| -rw-r--r-- | include/linux/i2c.h | 5 | ||||
| -rw-r--r-- | include/linux/list.h | 1 | ||||
| -rw-r--r-- | include/linux/nfsd/export.h | 7 | ||||
| -rw-r--r-- | include/linux/pci.h | 11 | ||||
| -rw-r--r-- | include/linux/pci_ids.h | 1 | ||||
| -rw-r--r-- | include/linux/raid/md.h | 8 | ||||
| -rw-r--r-- | include/linux/raid/md_k.h | 36 | ||||
| -rw-r--r-- | include/linux/raid/md_p.h | 53 | ||||
| -rw-r--r-- | include/linux/raid/multipath.h | 1 | ||||
| -rw-r--r-- | include/linux/raid/raid1.h | 2 | ||||
| -rw-r--r-- | include/linux/raid/raid5.h | 2 | ||||
| -rw-r--r-- | include/linux/security.h | 72 | ||||
| -rw-r--r-- | include/linux/serial_core.h | 14 | ||||
| -rw-r--r-- | include/linux/sunrpc/cache.h | 1 | ||||
| -rw-r--r-- | include/linux/thread_info.h | 2 | ||||
| -rw-r--r-- | include/linux/writeback.h | 1 |
24 files changed, 175 insertions, 73 deletions
diff --git a/include/linux/aio.h b/include/linux/aio.h index c03d92d84e39..6b106ebe99e8 100644 --- a/include/linux/aio.h +++ b/include/linux/aio.h @@ -37,9 +37,9 @@ struct kioctx; #define kiocbSetKicked(iocb) set_bit(KIF_KICKED, &(iocb)->ki_flags) #define kiocbSetCancelled(iocb) set_bit(KIF_CANCELLED, &(iocb)->ki_flags) -#define kiocbClearLocked(iocb) set_bit(KIF_LOCKED, &(iocb)->ki_flags) -#define kiocbClearKicked(iocb) set_bit(KIF_KICKED, &(iocb)->ki_flags) -#define kiocbClearCancelled(iocb) set_bit(KIF_CANCELLED, &(iocb)->ki_flags) +#define kiocbClearLocked(iocb) clear_bit(KIF_LOCKED, &(iocb)->ki_flags) +#define kiocbClearKicked(iocb) clear_bit(KIF_KICKED, &(iocb)->ki_flags) +#define kiocbClearCancelled(iocb) clear_bit(KIF_CANCELLED, &(iocb)->ki_flags) #define kiocbIsLocked(iocb) test_bit(0, &(iocb)->ki_flags) #define kiocbIsKicked(iocb) test_bit(1, &(iocb)->ki_flags) diff --git a/include/linux/amigaffs.h b/include/linux/amigaffs.h index bde160f417fd..6fb6bb5c6696 100644 --- a/include/linux/amigaffs.h +++ b/include/linux/amigaffs.h @@ -73,7 +73,7 @@ static inline void affs_brelse(struct buffer_head *bh) { if (bh) - pr_debug("affs_brelse: %ld\n", bh->b_blocknr); + pr_debug("affs_brelse: %lld\n", (long long) bh->b_blocknr); brelse(bh); } diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h index 55218964e7ef..94c93c9c5f66 100644 --- a/include/linux/backing-dev.h +++ b/include/linux/backing-dev.h @@ -17,8 +17,6 @@ enum bdi_state { BDI_pdflush, /* A pdflush thread is working this device */ BDI_write_congested, /* The write queue is getting full */ BDI_read_congested, /* The read queue is getting full */ - BDI_write_active, /* There are one or more queued writes */ - BDI_read_active, /* There are one or more queued reads */ BDI_unused, /* Available bits start here */ }; @@ -44,14 +42,4 @@ static inline int bdi_write_congested(struct backing_dev_info *bdi) return test_bit(BDI_write_congested, &bdi->state); } -static inline int bdi_read_active(struct backing_dev_info *bdi) -{ - return test_bit(BDI_read_active, &bdi->state); -} - -static inline int bdi_write_active(struct backing_dev_info *bdi) -{ - return test_bit(BDI_write_active, &bdi->state); -} - #endif /* _LINUX_BACKING_DEV_H */ diff --git a/include/linux/bio.h b/include/linux/bio.h index ca324808509f..4eb82c8b33fb 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h @@ -239,7 +239,6 @@ extern inline char *bio_kmap_irq(struct bio *bio, unsigned long *flags) * balancing is a lot nicer this way */ local_save_flags(*flags); - local_irq_disable(); addr = (unsigned long) kmap_atomic(bio_page(bio), KM_BIO_SRC_IRQ); if (addr & ~PAGE_MASK) diff --git a/include/linux/device.h b/include/linux/device.h index e27039ec2222..908d6b708fb7 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -366,6 +366,7 @@ extern int platform_device_register(struct platform_device *); extern void platform_device_unregister(struct platform_device *); extern struct bus_type platform_bus_type; +extern struct device legacy_bus; /* drivers/base/power.c */ extern int device_suspend(u32 state, u32 level); diff --git a/include/linux/ext3_fs.h b/include/linux/ext3_fs.h index 0612ce8e8274..b3da32479e13 100644 --- a/include/linux/ext3_fs.h +++ b/include/linux/ext3_fs.h @@ -730,6 +730,7 @@ extern void ext3_discard_prealloc (struct inode *); extern void ext3_dirty_inode(struct inode *); extern int ext3_change_inode_journal_flag(struct inode *, int); extern void ext3_truncate (struct inode *); +extern void ext3_set_inode_flags(struct inode *); /* ioctl.c */ extern int ext3_ioctl (struct inode *, struct file *, unsigned int, diff --git a/include/linux/file.h b/include/linux/file.h index e5c90a88ba71..0bfe318d873b 100644 --- a/include/linux/file.h +++ b/include/linux/file.h @@ -40,6 +40,9 @@ extern void FASTCALL(set_close_on_exec(unsigned int fd, int flag)); extern void put_filp(struct file *); extern int get_unused_fd(void); extern void FASTCALL(put_unused_fd(unsigned int fd)); +struct kmem_cache_s; +extern void filp_ctor(void * objp, struct kmem_cache_s *cachep, unsigned long cflags); +extern void filp_dtor(void * objp, struct kmem_cache_s *cachep, unsigned long dflags); extern struct file ** alloc_fd_array(int); extern int expand_fd_array(struct files_struct *, int nr); diff --git a/include/linux/fs.h b/include/linux/fs.h index 14bd953f6a64..d6741ac40fb4 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -456,7 +456,10 @@ extern spinlock_t files_lock; #define get_file(x) atomic_inc(&(x)->f_count) #define file_count(x) atomic_read(&(x)->f_count) -extern int init_private_file(struct file *, struct dentry *, int); +/* Initialize and open a private file and allocate its security structure. */ +extern int open_private_file(struct file *, struct dentry *, int); +/* Release a private file and free its security structure. */ +extern void close_private_file(struct file *file); #define MAX_NON_LFS ((1UL<<31) - 1) diff --git a/include/linux/i2c.h b/include/linux/i2c.h index 0b293a405341..a8f482b94ba4 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h @@ -34,6 +34,7 @@ #include <linux/module.h> #include <linux/types.h> #include <linux/i2c-id.h> +#include <linux/device.h> /* for struct device */ #include <asm/semaphore.h> /* --- General options ------------------------------------------------ */ @@ -144,6 +145,8 @@ struct i2c_driver { int (*command)(struct i2c_client *client,unsigned int cmd, void *arg); }; +extern struct bus_type i2c_bus_type; + /* * i2c_client identifies a single device (i.e. chip) that is connected to an * i2c bus. The behaviour is defined by the routines of the driver. This @@ -228,12 +231,14 @@ struct i2c_adapter { int timeout; int retries; + struct device dev; /* the adapter device */ #ifdef CONFIG_PROC_FS /* No need to set this when you initialize the adapter */ int inode; #endif /* def CONFIG_PROC_FS */ }; +#define to_i2c_adapter(d) container_of(d, struct i2c_adapter, dev) /*flags for the driver struct: */ #define I2C_DF_NOTIFY 0x01 /* notify on bus (de/a)ttaches */ diff --git a/include/linux/list.h b/include/linux/list.h index 3cd4d3bd1ebb..f082a59aa3c8 100644 --- a/include/linux/list.h +++ b/include/linux/list.h @@ -5,7 +5,6 @@ #include <linux/stddef.h> #include <linux/prefetch.h> -#include <linux/stddef.h> #include <asm/system.h> /* diff --git a/include/linux/nfsd/export.h b/include/linux/nfsd/export.h index 864e3b801f0f..48860ac34dae 100644 --- a/include/linux/nfsd/export.h +++ b/include/linux/nfsd/export.h @@ -35,12 +35,13 @@ #define NFSEXP_UIDMAP 0x0040 #define NFSEXP_KERBEROS 0x0080 /* not available */ #define NFSEXP_SUNSECURE 0x0100 -#define NFSEXP_CROSSMNT 0x0200 +#define NFSEXP_NOHIDE 0x0200 #define NFSEXP_NOSUBTREECHECK 0x0400 #define NFSEXP_NOAUTHNLM 0x0800 /* Don't authenticate NLM requests - just trust */ #define NFSEXP_MSNFS 0x1000 /* do silly things that MS clients expect */ #define NFSEXP_FSID 0x2000 -#define NFSEXP_ALLFLAGS 0x3FFF +#define NFSEXP_CROSSMNT 0x4000 +#define NFSEXP_ALLFLAGS 0x7FFF #ifdef __KERNEL__ @@ -73,7 +74,7 @@ struct svc_expkey { #define EX_SECURE(exp) (!((exp)->ex_flags & NFSEXP_INSECURE_PORT)) #define EX_ISSYNC(exp) (!((exp)->ex_flags & NFSEXP_ASYNC)) #define EX_RDONLY(exp) ((exp)->ex_flags & NFSEXP_READONLY) -#define EX_CROSSMNT(exp) ((exp)->ex_flags & NFSEXP_CROSSMNT) +#define EX_NOHIDE(exp) ((exp)->ex_flags & NFSEXP_NOHIDE) #define EX_SUNSECURE(exp) ((exp)->ex_flags & NFSEXP_SUNSECURE) #define EX_WGATHER(exp) ((exp)->ex_flags & NFSEXP_GATHERED_WRITES) diff --git a/include/linux/pci.h b/include/linux/pci.h index 393417af2f89..f87c44ae0689 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -485,11 +485,9 @@ struct pci_ops { int (*write)(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val); }; -struct pbus_set_ranges_data -{ - unsigned long io_start, io_end; - unsigned long mem_start, mem_end; - unsigned long prefetch_start, prefetch_end; +struct pci_bus_region { + unsigned long start; + unsigned long end; }; struct pci_driver { @@ -531,10 +529,7 @@ char *pcibios_setup (char *str); /* Used only when drivers/pci/setup.c is used */ void pcibios_align_resource(void *, struct resource *, unsigned long, unsigned long); -void pcibios_update_resource(struct pci_dev *, struct resource *, - struct resource *, int); void pcibios_update_irq(struct pci_dev *, int irq); -void pcibios_fixup_pbus_ranges(struct pci_bus *, struct pbus_set_ranges_data *); /* Generic PCI functions used internally */ diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index e2e9b9f1c2c9..ba94052020f0 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h @@ -1235,6 +1235,7 @@ #define PCI_VENDOR_ID_XIRCOM 0x115d #define PCI_DEVICE_ID_XIRCOM_X3201_ETH 0x0003 +#define PCI_DEVICE_ID_XIRCOM_RBM56G 0x0101 #define PCI_DEVICE_ID_XIRCOM_X3201_MDM 0x0103 #define PCI_VENDOR_ID_RENDITION 0x1163 diff --git a/include/linux/raid/md.h b/include/linux/raid/md.h index d7834b08cc88..3d4faa9f7171 100644 --- a/include/linux/raid/md.h +++ b/include/linux/raid/md.h @@ -27,6 +27,7 @@ #include <linux/module.h> #include <linux/hdreg.h> #include <linux/proc_fs.h> +#include <linux/seq_file.h> #include <linux/smp_lock.h> #include <linux/delay.h> #include <net/checksum.h> @@ -68,13 +69,14 @@ extern inline char * bdev_partition_name (struct block_device *bdev) } extern int register_md_personality (int p_num, mdk_personality_t *p); extern int unregister_md_personality (int p_num); -extern mdk_thread_t * md_register_thread (void (*run) (void *data), - void *data, const char *name); +extern mdk_thread_t * md_register_thread (void (*run) (mddev_t *mddev), + mddev_t *mddev, const char *name); extern void md_unregister_thread (mdk_thread_t *thread); extern void md_wakeup_thread(mdk_thread_t *thread); +extern void md_check_recovery(mddev_t *mddev); extern void md_interrupt_thread (mdk_thread_t *thread); extern void md_write_start(mddev_t *mddev); -extern void md_write_end(mddev_t *mddev, mdk_thread_t *thread); +extern void md_write_end(mddev_t *mddev); extern void md_handle_safemode(mddev_t *mddev); extern void md_done_sync(mddev_t *mddev, int blocks, int ok); extern void md_sync_acct(mdk_rdev_t *rdev, unsigned long nr_sectors); diff --git a/include/linux/raid/md_k.h b/include/linux/raid/md_k.h index 6426a2c3fe8f..02bdf9db2ae2 100644 --- a/include/linux/raid/md_k.h +++ b/include/linux/raid/md_k.h @@ -155,6 +155,7 @@ struct mdk_rdev_s struct page *sb_page; int sb_loaded; + sector_t data_offset; /* start of data in array */ sector_t sb_offset; int preferred_minor; /* autorun support */ @@ -206,22 +207,31 @@ struct mddev_s char uuid[16]; + struct mdk_thread_s *thread; /* management thread */ struct mdk_thread_s *sync_thread; /* doing resync or reconstruct */ unsigned long curr_resync; /* blocks scheduled */ unsigned long resync_mark; /* a recent timestamp */ unsigned long resync_mark_cnt;/* blocks written at resync_mark */ - /* recovery_running is 0 for no recovery/resync, - * 1 for active recovery - * 2 for active resync - * -error for an error (e.g. -EINTR) - * it can only be set > 0 under reconfig_sem + + /* recovery/resync flags + * NEEDED: we might need to start a resync/recover + * RUNNING: a thread is running, or about to be started + * SYNC: actually doing a resync, not a recovery + * ERR: and IO error was detected - abort the resync/recovery + * INTR: someone requested a (clean) early abort. + * DONE: thread is done and is waiting to be reaped */ - int recovery_running; - int recovery_error; /* error from recovery write */ +#define MD_RECOVERY_RUNNING 0 +#define MD_RECOVERY_SYNC 1 +#define MD_RECOVERY_ERR 2 +#define MD_RECOVERY_INTR 3 +#define MD_RECOVERY_DONE 4 +#define MD_RECOVERY_NEEDED 5 + unsigned long recovery; + int in_sync; /* know to not need resync */ struct semaphore reconfig_sem; atomic_t active; - int spares; int degraded; /* whether md should consider * adding a spare @@ -230,9 +240,11 @@ struct mddev_s atomic_t recovery_active; /* blocks scheduled, but not written */ wait_queue_head_t recovery_wait; sector_t recovery_cp; - int safemode; /* if set, update "clean" superblock + unsigned int safemode; /* if set, update "clean" superblock * when no writes pending. */ + unsigned int safemode_delay; + struct timer_list safemode_timer; atomic_t writes_pending; request_queue_t queue; /* for plugging ... */ @@ -245,7 +257,7 @@ struct mdk_personality_s int (*make_request)(request_queue_t *q, struct bio *bio); int (*run)(mddev_t *mddev); int (*stop)(mddev_t *mddev); - int (*status)(char *page, mddev_t *mddev); + void (*status)(struct seq_file *seq, mddev_t *mddev); /* error_handler must set ->faulty and clear ->in_sync * if appropriate, and should abort recovery if needed */ @@ -292,8 +304,8 @@ extern mdk_rdev_t * find_rdev_nr(mddev_t *mddev, int nr); ITERATE_RDEV_GENERIC(pending_raid_disks,rdev,tmp) typedef struct mdk_thread_s { - void (*run) (void *data); - void *data; + void (*run) (mddev_t *mddev); + mddev_t *mddev; wait_queue_head_t wqueue; unsigned long flags; struct completion *event; diff --git a/include/linux/raid/md_p.h b/include/linux/raid/md_p.h index cb002ba3556f..022b607bf9d8 100644 --- a/include/linux/raid/md_p.h +++ b/include/linux/raid/md_p.h @@ -173,5 +173,58 @@ static inline __u64 md_event(mdp_super_t *sb) { return (ev<<32)| sb->events_lo; } +/* + * The version-1 superblock : + * All numeric fields are little-endian. + * + * total size: 256 bytes plus 2 per device. + * 1K allows 384 devices. + */ +struct mdp_superblock_1 { + /* constant array information - 128 bytes */ + __u32 magic; /* MD_SB_MAGIC: 0xa92b4efc - little endian */ + __u32 major_version; /* 1 */ + __u32 feature_map; /* 0 for now */ + __u32 pad0; /* always set to 0 when writing */ + + __u8 set_uuid[16]; /* user-space generated. */ + char set_name[32]; /* set and interpreted by user-space */ + + __u64 ctime; /* lo 40 bits are seconds, top 24 are microseconds or 0*/ + __u32 level; /* -4 (multipath), -1 (linear), 0,1,4,5 */ + __u32 layout; /* only for raid5 currently */ + __u64 size; /* used size of component devices, in 512byte sectors */ + + __u32 chunksize; /* in 512byte sectors */ + __u32 raid_disks; + __u8 pad1[128-92]; /* set to 0 when written */ + + /* constant this-device information - 64 bytes */ + __u64 data_offset; /* sector start of data, often 0 */ + __u64 data_size; /* sectors in this device that can be used for data */ + __u64 super_offset; /* sector start of this superblock */ + __u64 recovery_offset;/* sectors before this offset (from data_offset) have been recovered */ + __u32 dev_number; /* permanent identifier of this device - not role in raid */ + __u32 cnt_corrected_read; /* number of read errors that were corrected by re-writing */ + __u8 device_uuid[16]; /* user-space setable, ignored by kernel */ + __u8 pad2[64-56]; /* set to 0 when writing */ + + /* array state information - 64 bytes */ + __u64 utime; /* 40 bits second, 24 btes microseconds */ + __u64 events; /* incremented when superblock updated */ + __u64 resync_offset; /* data before this offset (from data_offset) known to be in sync */ + __u32 sb_csum; /* checksum upto devs[max_dev] */ + __u32 max_dev; /* size of devs[] array to consider */ + __u8 pad3[64-40]; /* set to 0 when writing */ + + /* device state information. Indexed by dev_number. + * 2 bytes per device + * Note there are no per-device state flags. State information is rolled + * into the 'roles' value. If a device is spare or faulty, then it doesn't + * have a meaningful role. + */ + __u16 dev_roles[0]; /* role in array, or 0xffff for a spare, or 0xfffe for faulty */ +}; + #endif diff --git a/include/linux/raid/multipath.h b/include/linux/raid/multipath.h index 50db7f3c8c57..42d040ea63df 100644 --- a/include/linux/raid/multipath.h +++ b/include/linux/raid/multipath.h @@ -13,7 +13,6 @@ struct multipath_private_data { struct multipath_info multipaths[MD_SB_DISKS]; int raid_disks; int working_disks; - mdk_thread_t *thread; spinlock_t device_lock; mempool_t *pool; diff --git a/include/linux/raid/raid1.h b/include/linux/raid/raid1.h index 9ed30f4d0748..cc7aa899a613 100644 --- a/include/linux/raid/raid1.h +++ b/include/linux/raid/raid1.h @@ -19,7 +19,6 @@ struct r1_private_data_s { int working_disks; int last_used; sector_t next_seq_sect; - mdk_thread_t *thread; spinlock_t device_lock; /* for use when syncing mirrors: */ @@ -34,7 +33,6 @@ struct r1_private_data_s { mempool_t *r1bio_pool; mempool_t *r1buf_pool; - char thread_name[MD_THREAD_NAME_MAX]; }; typedef struct r1_private_data_s conf_t; diff --git a/include/linux/raid/raid5.h b/include/linux/raid/raid5.h index 636e10b84502..c9eea7c884d0 100644 --- a/include/linux/raid/raid5.h +++ b/include/linux/raid/raid5.h @@ -203,7 +203,6 @@ struct disk_info { struct raid5_private_data { struct stripe_head **stripe_hashtbl; mddev_t *mddev; - mdk_thread_t *thread; struct disk_info disks[MD_SB_DISKS]; struct disk_info *spare; int chunk_size, level, algorithm; @@ -226,7 +225,6 @@ struct raid5_private_data { * waiting for 25% to be free */ spinlock_t device_lock; - char thread_name[MD_THREAD_NAME_MAX]; }; typedef struct raid5_private_data raid5_conf_t; diff --git a/include/linux/security.h b/include/linux/security.h index d2873ec35117..6a98cb692bf8 100644 --- a/include/linux/security.h +++ b/include/linux/security.h @@ -48,6 +48,7 @@ extern void cap_bprm_compute_creds (struct linux_binprm *bprm); extern int cap_task_post_setuid (uid_t old_ruid, uid_t old_euid, uid_t old_suid, int flags); extern void cap_task_kmod_set_label (void); extern void cap_task_reparent_to_init (struct task_struct *p); +extern int cap_syslog (int type); static inline int cap_netlink_send (struct sk_buff *skb) { @@ -62,7 +63,6 @@ static inline int cap_netlink_recv (struct sk_buff *skb) return 0; } - /* * Values used in the task_security_ops calls */ @@ -351,10 +351,6 @@ struct swap_info_struct; * @mnt is the vfsmount where the dentry was looked up * @dentry contains the dentry structure for the file. * Return 0 if permission is granted. - * @inode_post_lookup: - * Set the security attributes for a file after it has been looked up. - * @inode contains the inode structure for parent directory. - * @d contains the dentry structure for the file. * @inode_delete: * @inode contains the inode structure for deleted inode. * This hook is called when a deleted inode is released (i.e. an inode @@ -926,11 +922,23 @@ struct swap_info_struct; * is NULL. * @file contains the file structure for the accounting file (may be NULL). * Return 0 if permission is granted. + * @sysctl: + * Check permission before accessing the @table sysctl variable in the + * manner specified by @op. + * @table contains the ctl_table structure for the sysctl variable. + * @op contains the operation (001 = search, 002 = write, 004 = read). + * Return 0 if permission is granted. * @capable: * Check whether the @tsk process has the @cap capability. * @tsk contains the task_struct for the process. * @cap contains the capability <include/linux/capability.h>. * Return 0 if the capability is granted for @tsk. + * @syslog: + * Check permission before accessing the kernel message ring or changing + * logging to the console. + * See the syslog(2) manual page for an explanation of the @type values. + * @type contains the type of action. + * Return 0 if permission is granted. * * @register_security: * allow module stacking. @@ -957,9 +965,11 @@ struct security_operations { kernel_cap_t * inheritable, kernel_cap_t * permitted); int (*acct) (struct file * file); + int (*sysctl) (ctl_table * table, int op); int (*capable) (struct task_struct * tsk, int cap); int (*quotactl) (int cmds, int type, int id, struct super_block * sb); int (*quota_on) (struct file * f); + int (*syslog) (int type); int (*bprm_alloc_security) (struct linux_binprm * bprm); void (*bprm_free_security) (struct linux_binprm * bprm); @@ -969,6 +979,7 @@ struct security_operations { int (*sb_alloc_security) (struct super_block * sb); void (*sb_free_security) (struct super_block * sb); + int (*sb_kern_mount) (struct super_block *sb); int (*sb_statfs) (struct super_block * sb); int (*sb_mount) (char *dev_name, struct nameidata * nd, char *type, unsigned long flags, void *data); @@ -1022,7 +1033,6 @@ struct security_operations { int (*inode_permission_lite) (struct inode *inode, int mask); int (*inode_setattr) (struct dentry *dentry, struct iattr *attr); int (*inode_getattr) (struct vfsmount *mnt, struct dentry *dentry); - void (*inode_post_lookup) (struct inode *inode, struct dentry *d); void (*inode_delete) (struct inode *inode); int (*inode_setxattr) (struct dentry *dentry, char *name, void *value, size_t size, int flags); @@ -1111,6 +1121,8 @@ struct security_operations { int (*unregister_security) (const char *name, struct security_operations *ops); + void (*d_instantiate) (struct dentry *dentry, struct inode *inode); + #ifdef CONFIG_SECURITY_NETWORK int (*unix_stream_connect) (struct socket * sock, struct socket * other, struct sock * newsk); @@ -1178,6 +1190,11 @@ static inline int security_acct (struct file *file) return security_ops->acct (file); } +static inline int security_sysctl(ctl_table * table, int op) +{ + return security_ops->sysctl(table, op); +} + static inline int security_quotactl (int cmds, int type, int id, struct super_block *sb) { @@ -1189,6 +1206,11 @@ static inline int security_quota_on (struct file * file) return security_ops->quota_on (file); } +static inline int security_syslog(int type) +{ + return security_ops->syslog(type); +} + static inline int security_bprm_alloc (struct linux_binprm *bprm) { return security_ops->bprm_alloc_security (bprm); @@ -1220,6 +1242,11 @@ static inline void security_sb_free (struct super_block *sb) security_ops->sb_free_security (sb); } +static inline int security_sb_kern_mount (struct super_block *sb) +{ + return security_ops->sb_kern_mount (sb); +} + static inline int security_sb_statfs (struct super_block *sb) { return security_ops->sb_statfs (sb); @@ -1426,12 +1453,6 @@ static inline int security_inode_getattr (struct vfsmount *mnt, return security_ops->inode_getattr (mnt, dentry); } -static inline void security_inode_post_lookup (struct inode *inode, - struct dentry *dentry) -{ - security_ops->inode_post_lookup (inode, dentry); -} - static inline void security_inode_delete (struct inode *inode) { security_ops->inode_delete (inode); @@ -1729,6 +1750,11 @@ static inline int security_sem_semop (struct sem_array * sma, return security_ops->sem_semop(sma, sops, nsops, alter); } +static inline void security_d_instantiate (struct dentry *dentry, struct inode *inode) +{ + security_ops->d_instantiate (dentry, inode); +} + static inline int security_netlink_send(struct sk_buff * skb) { return security_ops->netlink_send(skb); @@ -1793,6 +1819,11 @@ static inline int security_acct (struct file *file) return 0; } +static inline int security_sysctl(ctl_table * table, int op) +{ + return 0; +} + static inline int security_quotactl (int cmds, int type, int id, struct super_block * sb) { @@ -1804,6 +1835,11 @@ static inline int security_quota_on (struct file * file) return 0; } +static inline int security_syslog(int type) +{ + return cap_syslog(type); +} + static inline int security_bprm_alloc (struct linux_binprm *bprm) { return 0; @@ -1835,6 +1871,11 @@ static inline int security_sb_alloc (struct super_block *sb) static inline void security_sb_free (struct super_block *sb) { } +static inline int security_sb_kern_mount (struct super_block *sb) +{ + return 0; +} + static inline int security_sb_statfs (struct super_block *sb) { return 0; @@ -2013,10 +2054,6 @@ static inline int security_inode_getattr (struct vfsmount *mnt, return 0; } -static inline void security_inode_post_lookup (struct inode *inode, - struct dentry *dentry) -{ } - static inline void security_inode_delete (struct inode *inode) { } @@ -2300,6 +2337,9 @@ static inline int security_sem_semop (struct sem_array * sma, return 0; } +static inline void security_d_instantiate (struct dentry *dentry, struct inode *inode) +{ } + /* * The netlink capability defaults need to be used inline by default * (rather than hooking into the capability module) to reduce overhead diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 3412f8b7f2ce..80ba519dda77 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h @@ -208,12 +208,11 @@ struct uart_state { #define USF_CLOSING_WAIT_NONE (65535) int count; + int pm_state; struct uart_info *info; struct uart_port *port; -#ifdef CONFIG_PM - struct pm_dev *pm; -#endif + struct semaphore sem; }; #define UART_XMIT_SIZE 1024 @@ -224,8 +223,6 @@ struct uart_state { * stuff here. */ struct uart_info { - struct uart_port *port; - struct uart_state *state; struct tty_struct *tty; struct circ_buf xmit; unsigned int flags; @@ -237,7 +234,6 @@ struct uart_info { */ #define UIF_CHECK_CD (1 << 25) #define UIF_CTS_FLOW (1 << 26) -#define UIF_CLOSING (1 << 27) #define UIF_NORMAL_ACTIVE (1 << 29) #define UIF_INITIALIZED (1 << 31) @@ -307,6 +303,12 @@ int uart_register_port(struct uart_driver *reg, struct uart_port *port); int uart_add_one_port(struct uart_driver *reg, struct uart_port *port); int uart_remove_one_port(struct uart_driver *reg, struct uart_port *port); +/* + * Power Management + */ +int uart_suspend_port(struct uart_driver *reg, struct uart_port *port, u32 level); +int uart_resume_port(struct uart_driver *reg, struct uart_port *port, u32 level); + #define uart_circ_empty(circ) ((circ)->head == (circ)->tail) #define uart_circ_clear(circ) ((circ)->head = (circ)->tail = 0) diff --git a/include/linux/sunrpc/cache.h b/include/linux/sunrpc/cache.h index a3cdc080dd85..1d3bccefe959 100644 --- a/include/linux/sunrpc/cache.h +++ b/include/linux/sunrpc/cache.h @@ -190,6 +190,7 @@ RTN *FNAME ARGS \ else read_unlock(&(DETAIL)->hash_lock); \ if (set) \ cache_fresh(DETAIL, &tmp->MEMBER, item->MEMBER.expiry_time); \ + if (set==1 && new) cache_fresh(DETAIL, &new->MEMBER, 0); \ if (new) (DETAIL)->cache_put(&new->MEMBER, DETAIL); \ return tmp; \ } \ diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h index 8bacba8ed989..d252f45a0f9b 100644 --- a/include/linux/thread_info.h +++ b/include/linux/thread_info.h @@ -12,7 +12,7 @@ */ struct restart_block { long (*fn)(struct restart_block *); - unsigned long arg0, arg1, arg2; + unsigned long arg0, arg1, arg2, arg3; }; extern long do_no_restart_syscall(struct restart_block *parm); diff --git a/include/linux/writeback.h b/include/linux/writeback.h index 620f18f5ceeb..f316169bb1f7 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h @@ -79,6 +79,7 @@ extern int dirty_writeback_centisecs; extern int dirty_expire_centisecs; +void page_writeback_init(void); void balance_dirty_pages(struct address_space *mapping); void balance_dirty_pages_ratelimited(struct address_space *mapping); int pdflush_operation(void (*fn)(unsigned long), unsigned long arg0); |
