diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/backing-dev-defs.h | 5 | ||||
| -rw-r--r-- | include/linux/backing-dev.h | 31 | ||||
| -rw-r--r-- | include/linux/fscrypt_notsupp.h | 13 | ||||
| -rw-r--r-- | include/linux/fscrypt_supp.h | 5 | ||||
| -rw-r--r-- | include/linux/hid.h | 6 | ||||
| -rw-r--r-- | include/linux/mm.h | 4 | ||||
| -rw-r--r-- | include/linux/tty.h | 1 | 
7 files changed, 44 insertions, 21 deletions
| diff --git a/include/linux/backing-dev-defs.h b/include/linux/backing-dev-defs.h index c104d4aed62a..de1414ada5a1 100644 --- a/include/linux/backing-dev-defs.h +++ b/include/linux/backing-dev-defs.h @@ -193,6 +193,11 @@ static inline void set_bdi_congested(struct backing_dev_info *bdi, int sync)  	set_wb_congested(bdi->wb.congested, sync);  } +struct wb_lock_cookie { +	bool locked; +	unsigned long flags; +}; +  #ifdef CONFIG_CGROUP_WRITEBACK  /** diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h index 125bc67319b4..4bc6540d426b 100644 --- a/include/linux/backing-dev.h +++ b/include/linux/backing-dev.h @@ -374,7 +374,7 @@ static inline struct bdi_writeback *inode_to_wb(struct inode *inode)  /**   * unlocked_inode_to_wb_begin - begin unlocked inode wb access transaction   * @inode: target inode - * @lockedp: temp bool output param, to be passed to the end function + * @cookie: output param, to be passed to the end function   *   * The caller wants to access the wb associated with @inode but isn't   * holding inode->i_lock, mapping->tree_lock or wb->list_lock.  This @@ -382,12 +382,12 @@ static inline struct bdi_writeback *inode_to_wb(struct inode *inode)   * association doesn't change until the transaction is finished with   * unlocked_inode_to_wb_end().   * - * The caller must call unlocked_inode_to_wb_end() with *@lockdep - * afterwards and can't sleep during transaction.  IRQ may or may not be - * disabled on return. + * The caller must call unlocked_inode_to_wb_end() with *@cookie afterwards and + * can't sleep during the transaction.  IRQs may or may not be disabled on + * return.   */  static inline struct bdi_writeback * -unlocked_inode_to_wb_begin(struct inode *inode, bool *lockedp) +unlocked_inode_to_wb_begin(struct inode *inode, struct wb_lock_cookie *cookie)  {  	rcu_read_lock(); @@ -395,10 +395,10 @@ unlocked_inode_to_wb_begin(struct inode *inode, bool *lockedp)  	 * Paired with store_release in inode_switch_wb_work_fn() and  	 * ensures that we see the new wb if we see cleared I_WB_SWITCH.  	 */ -	*lockedp = smp_load_acquire(&inode->i_state) & I_WB_SWITCH; +	cookie->locked = smp_load_acquire(&inode->i_state) & I_WB_SWITCH; -	if (unlikely(*lockedp)) -		spin_lock_irq(&inode->i_mapping->tree_lock); +	if (unlikely(cookie->locked)) +		spin_lock_irqsave(&inode->i_mapping->tree_lock, cookie->flags);  	/*  	 * Protected by either !I_WB_SWITCH + rcu_read_lock() or tree_lock. @@ -410,12 +410,14 @@ unlocked_inode_to_wb_begin(struct inode *inode, bool *lockedp)  /**   * unlocked_inode_to_wb_end - end inode wb access transaction   * @inode: target inode - * @locked: *@lockedp from unlocked_inode_to_wb_begin() + * @cookie: @cookie from unlocked_inode_to_wb_begin()   */ -static inline void unlocked_inode_to_wb_end(struct inode *inode, bool locked) +static inline void unlocked_inode_to_wb_end(struct inode *inode, +					    struct wb_lock_cookie *cookie)  { -	if (unlikely(locked)) -		spin_unlock_irq(&inode->i_mapping->tree_lock); +	if (unlikely(cookie->locked)) +		spin_unlock_irqrestore(&inode->i_mapping->tree_lock, +				       cookie->flags);  	rcu_read_unlock();  } @@ -462,12 +464,13 @@ static inline struct bdi_writeback *inode_to_wb(struct inode *inode)  }  static inline struct bdi_writeback * -unlocked_inode_to_wb_begin(struct inode *inode, bool *lockedp) +unlocked_inode_to_wb_begin(struct inode *inode, struct wb_lock_cookie *cookie)  {  	return inode_to_wb(inode);  } -static inline void unlocked_inode_to_wb_end(struct inode *inode, bool locked) +static inline void unlocked_inode_to_wb_end(struct inode *inode, +					    struct wb_lock_cookie *cookie)  {  } diff --git a/include/linux/fscrypt_notsupp.h b/include/linux/fscrypt_notsupp.h index 5777251400f9..44bd4fbd3ec5 100644 --- a/include/linux/fscrypt_notsupp.h +++ b/include/linux/fscrypt_notsupp.h @@ -24,6 +24,10 @@ static inline bool fscrypt_dummy_context_enabled(struct inode *inode)  }  /* crypto.c */ +static inline void fscrypt_enqueue_decrypt_work(struct work_struct *work) +{ +} +  static inline struct fscrypt_ctx *fscrypt_get_ctx(const struct inode *inode,  						  gfp_t gfp_flags)  { @@ -160,10 +164,13 @@ static inline bool fscrypt_match_name(const struct fscrypt_name *fname,  }  /* bio.c */ -static inline void fscrypt_decrypt_bio_pages(struct fscrypt_ctx *ctx, -					     struct bio *bio) +static inline void fscrypt_decrypt_bio(struct bio *bio) +{ +} + +static inline void fscrypt_enqueue_decrypt_bio(struct fscrypt_ctx *ctx, +					       struct bio *bio)  { -	return;  }  static inline void fscrypt_pullback_bio_page(struct page **page, bool restore) diff --git a/include/linux/fscrypt_supp.h b/include/linux/fscrypt_supp.h index c88d2058902a..9d1857302b73 100644 --- a/include/linux/fscrypt_supp.h +++ b/include/linux/fscrypt_supp.h @@ -58,6 +58,7 @@ static inline bool fscrypt_dummy_context_enabled(struct inode *inode)  }  /* crypto.c */ +extern void fscrypt_enqueue_decrypt_work(struct work_struct *);  extern struct fscrypt_ctx *fscrypt_get_ctx(const struct inode *, gfp_t);  extern void fscrypt_release_ctx(struct fscrypt_ctx *);  extern struct page *fscrypt_encrypt_page(const struct inode *, struct page *, @@ -187,7 +188,9 @@ static inline bool fscrypt_match_name(const struct fscrypt_name *fname,  }  /* bio.c */ -extern void fscrypt_decrypt_bio_pages(struct fscrypt_ctx *, struct bio *); +extern void fscrypt_decrypt_bio(struct bio *); +extern void fscrypt_enqueue_decrypt_bio(struct fscrypt_ctx *ctx, +					struct bio *bio);  extern void fscrypt_pullback_bio_page(struct page **, bool);  extern int fscrypt_zeroout_range(const struct inode *, pgoff_t, sector_t,  				 unsigned int); diff --git a/include/linux/hid.h b/include/linux/hid.h index 251a1d382e23..fd86687f8119 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h @@ -793,7 +793,7 @@ extern int hidinput_connect(struct hid_device *hid, unsigned int force);  extern void hidinput_disconnect(struct hid_device *);  int hid_set_field(struct hid_field *, unsigned, __s32); -int hid_input_report(struct hid_device *, int type, u8 *, int, int); +int hid_input_report(struct hid_device *, int type, u8 *, u32, int);  int hidinput_find_field(struct hid_device *hid, unsigned int type, unsigned int code, struct hid_field **field);  struct hid_field *hidinput_get_led_field(struct hid_device *hid);  unsigned int hidinput_count_leds(struct hid_device *hid); @@ -1098,13 +1098,13 @@ static inline void hid_hw_wait(struct hid_device *hdev)   *   * @report: the report we want to know the length   */ -static inline int hid_report_len(struct hid_report *report) +static inline u32 hid_report_len(struct hid_report *report)  {  	/* equivalent to DIV_ROUND_UP(report->size, 8) + !!(report->id > 0) */  	return ((report->size - 1) >> 3) + 1 + (report->id > 0);  } -int hid_report_raw_event(struct hid_device *hid, int type, u8 *data, int size, +int hid_report_raw_event(struct hid_device *hid, int type, u8 *data, u32 size,  		int interrupt);  /* HID quirks API */ diff --git a/include/linux/mm.h b/include/linux/mm.h index d2dcc8727bc8..34fcdede4604 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -241,10 +241,14 @@ extern pgprot_t protection_map[16];   * ->fault function. The vma's ->fault is responsible for returning a bitmask   * of VM_FAULT_xxx flags that give details about how the fault was handled.   * + * MM layer fills up gfp_mask for page allocations but fault handler might + * alter it if its implementation requires a different allocation context. + *   * pgoff should be used in favour of virtual_address, if possible.   */  struct vm_fault {  	unsigned int flags;		/* FAULT_FLAG_xxx flags */ +	gfp_t gfp_mask;			/* gfp mask to be used for allocations */  	pgoff_t pgoff;			/* Logical page offset based on vma */  	void __user *virtual_address;	/* Faulting virtual address */ diff --git a/include/linux/tty.h b/include/linux/tty.h index a1042afff99a..d67ceb3f5958 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h @@ -342,6 +342,7 @@ struct tty_file_private {  #define TTY_PTY_LOCK 		16	/* pty private */  #define TTY_NO_WRITE_SPLIT 	17	/* Preserve write boundaries to driver */  #define TTY_HUPPED 		18	/* Post driver->hangup() */ +#define TTY_HUPPING		19	/* Hangup in progress */  #define TTY_LDISC_HALTED	22	/* Line discipline is halted */  #define TTY_WRITE_FLUSH(tty) tty_write_flush((tty)) | 
