@@ -299,14 +299,43 @@ static inline struct rw_semaphore *nv_mmap_get_lock(struct mm_struct *mm)
299299 * Commit 45ad9f5290dc updated vma_start_write() to call __vma_start_write().
300300 */
301301void nv_vma_start_write (struct vm_area_struct * );
302+
303+ static inline void nv_vma_flags_set_word (struct vm_area_struct * vma , unsigned long flags )
304+ {
305+ nv_vma_start_write (vma );
306+ #if defined(NV_VMA_FLAGS_SET_WORD_PRESENT )
307+ vma_flags_set_word (& vma -> flags , flags );
308+ #else
309+ ACCESS_PRIVATE (vma , __vm_flags ) |= flags ;
310+ #endif
311+ }
312+
313+ static inline void nv_vma_flags_clear_word (struct vm_area_struct * vma , unsigned long flags )
314+ {
315+ nv_vma_start_write (vma );
316+ #if defined(NV_VMA_FLAGS_SET_WORD_PRESENT )
317+ vma_flags_clear_word (& vma -> flags , flags );
318+ #else
319+ ACCESS_PRIVATE (vma , __vm_flags ) &= ~flags ;
302320#endif
321+ }
322+
323+ static inline int nv_is_vma_write_locked (struct vm_area_struct * vma , unsigned int * mm_lock_seq )
324+ {
325+ #if defined(NV_IS_VMA_WRITE_LOCKED_HAS_MM_LOCK_SEQ_ARG )
326+ return __is_vma_write_locked (vma , mm_lock_seq );
327+ #else
328+ * mm_lock_seq = __vma_raw_mm_seqnum (vma );
329+ return __is_vma_write_locked (vma );
330+ #endif
331+ }
332+ #endif // !NV_CAN_CALL_VMA_START_WRITE
303333
304334static inline void nv_vm_flags_set (struct vm_area_struct * vma , vm_flags_t flags )
305335{
306336#if !NV_CAN_CALL_VMA_START_WRITE
307- nv_vma_start_write (vma );
308- ACCESS_PRIVATE (vma , __vm_flags ) |= flags ;
309- #elif defined(NV_VM_AREA_STRUCT_HAS_CONST_VM_FLAGS )
337+ nv_vma_flags_set_word (vma , flags );
338+ #elif defined(NV_VM_FLAGS_SET_PRESENT )
310339 vm_flags_set (vma , flags );
311340#else
312341 vma -> vm_flags |= flags ;
@@ -316,9 +345,8 @@ static inline void nv_vm_flags_set(struct vm_area_struct *vma, vm_flags_t flags)
316345static inline void nv_vm_flags_clear (struct vm_area_struct * vma , vm_flags_t flags )
317346{
318347#if !NV_CAN_CALL_VMA_START_WRITE
319- nv_vma_start_write (vma );
320- ACCESS_PRIVATE (vma , __vm_flags ) &= ~flags ;
321- #elif defined(NV_VM_AREA_STRUCT_HAS_CONST_VM_FLAGS )
348+ nv_vma_flags_clear_word (vma , flags );
349+ #elif defined(NV_VM_FLAGS_SET_PRESENT )
322350 vm_flags_clear (vma , flags );
323351#else
324352 vma -> vm_flags &= ~flags ;
0 commit comments