mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-11 13:27:06 +09:00
Merge tag 'v4.9.201' of git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable into odroidg12-4.9.y
This is the 4.9.201 stable release
This commit is contained in:
@@ -42,6 +42,7 @@ struct drm_vma_offset_node {
|
||||
rwlock_t vm_lock;
|
||||
struct drm_mm_node vm_node;
|
||||
struct rb_root vm_files;
|
||||
bool readonly:1;
|
||||
};
|
||||
|
||||
struct drm_vma_offset_manager {
|
||||
|
||||
@@ -504,11 +504,6 @@ static inline int is_vmalloc_or_module_addr(const void *x)
|
||||
|
||||
extern void kvfree(const void *addr);
|
||||
|
||||
static inline atomic_t *compound_mapcount_ptr(struct page *page)
|
||||
{
|
||||
return &page[1].compound_mapcount;
|
||||
}
|
||||
|
||||
static inline int compound_mapcount(struct page *page)
|
||||
{
|
||||
VM_BUG_ON_PAGE(!PageCompound(page), page);
|
||||
|
||||
@@ -272,6 +272,11 @@ struct page_frag_cache {
|
||||
|
||||
typedef unsigned long vm_flags_t;
|
||||
|
||||
static inline atomic_t *compound_mapcount_ptr(struct page *page)
|
||||
{
|
||||
return &page[1].compound_mapcount;
|
||||
}
|
||||
|
||||
/*
|
||||
* A region containing a mapping of a non-memory backed file under NOMMU
|
||||
* conditions. These are held in a global tree and are pinned by the VMAs that
|
||||
|
||||
@@ -551,12 +551,28 @@ static inline int PageTransCompound(struct page *page)
|
||||
*
|
||||
* Unlike PageTransCompound, this is safe to be called only while
|
||||
* split_huge_pmd() cannot run from under us, like if protected by the
|
||||
* MMU notifier, otherwise it may result in page->_mapcount < 0 false
|
||||
* MMU notifier, otherwise it may result in page->_mapcount check false
|
||||
* positives.
|
||||
*
|
||||
* We have to treat page cache THP differently since every subpage of it
|
||||
* would get _mapcount inc'ed once it is PMD mapped. But, it may be PTE
|
||||
* mapped in the current process so comparing subpage's _mapcount to
|
||||
* compound_mapcount to filter out PTE mapped case.
|
||||
*/
|
||||
static inline int PageTransCompoundMap(struct page *page)
|
||||
{
|
||||
return PageTransCompound(page) && atomic_read(&page->_mapcount) < 0;
|
||||
struct page *head;
|
||||
|
||||
if (!PageTransCompound(page))
|
||||
return 0;
|
||||
|
||||
if (PageAnon(page))
|
||||
return atomic_read(&page->_mapcount) < 0;
|
||||
|
||||
head = compound_head(page);
|
||||
/* File THP is PMD mapped and not PTE mapped */
|
||||
return atomic_read(&page->_mapcount) ==
|
||||
atomic_read(compound_mapcount_ptr(head));
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -887,6 +887,7 @@ struct netns_ipvs {
|
||||
struct delayed_work defense_work; /* Work handler */
|
||||
int drop_rate;
|
||||
int drop_counter;
|
||||
int old_secure_tcp;
|
||||
atomic_t dropentry;
|
||||
/* locks in ctl.c */
|
||||
spinlock_t dropentry_lock; /* drop entry handling */
|
||||
|
||||
@@ -425,8 +425,8 @@ static inline int neigh_event_send(struct neighbour *neigh, struct sk_buff *skb)
|
||||
{
|
||||
unsigned long now = jiffies;
|
||||
|
||||
if (neigh->used != now)
|
||||
neigh->used = now;
|
||||
if (READ_ONCE(neigh->used) != now)
|
||||
WRITE_ONCE(neigh->used, now);
|
||||
if (!(neigh->nud_state&(NUD_CONNECTED|NUD_DELAY|NUD_PROBE)))
|
||||
return __neigh_event_send(neigh, skb);
|
||||
return 0;
|
||||
|
||||
@@ -705,7 +705,8 @@ struct nft_expr_ops {
|
||||
*/
|
||||
struct nft_expr {
|
||||
const struct nft_expr_ops *ops;
|
||||
unsigned char data[];
|
||||
unsigned char data[]
|
||||
__attribute__((aligned(__alignof__(u64))));
|
||||
};
|
||||
|
||||
static inline void *nft_expr_priv(const struct nft_expr *expr)
|
||||
|
||||
@@ -2149,7 +2149,7 @@ static inline ktime_t sock_read_timestamp(struct sock *sk)
|
||||
|
||||
return kt;
|
||||
#else
|
||||
return sk->sk_stamp;
|
||||
return READ_ONCE(sk->sk_stamp);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -2160,7 +2160,7 @@ static inline void sock_write_timestamp(struct sock *sk, ktime_t kt)
|
||||
sk->sk_stamp = kt;
|
||||
write_sequnlock(&sk->sk_stamp_seq);
|
||||
#else
|
||||
sk->sk_stamp = kt;
|
||||
WRITE_ONCE(sk->sk_stamp, kt);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user