Merge 5.10.6 into android12-5.10
Changes in 5.10.6 Revert "drm/amd/display: Fix memory leaks in S3 resume" Revert "mtd: spinand: Fix OOB read" rtc: pcf2127: move watchdog initialisation to a separate function rtc: pcf2127: only use watchdog when explicitly available dt-bindings: rtc: add reset-source property kdev_t: always inline major/minor helper functions Bluetooth: Fix attempting to set RPA timeout when unsupported ALSA: hda/realtek - Modify Dell platform name ALSA: hda/hdmi: Fix incorrect mutex unlock in silent_stream_disable() drm/i915/tgl: Fix Combo PHY DPLL fractional divider for 38.4MHz ref clock scsi: ufs: Allow an error return value from ->device_reset() scsi: ufs: Re-enable WriteBooster after device reset RDMA/core: remove use of dma_virt_ops RDMA/siw,rxe: Make emulated devices virtual in the device tree fuse: fix bad inode perf: Break deadlock involving exec_update_mutex rwsem: Implement down_read_killable_nested rwsem: Implement down_read_interruptible exec: Transform exec_update_mutex into a rw_semaphore mwifiex: Fix possible buffer overflows in mwifiex_cmd_802_11_ad_hoc_start Linux 5.10.6 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: Id4c57a151a1e8f2162163d2337b6055f04edbe9b
This commit is contained in:
@@ -1354,6 +1354,18 @@ static inline void __down_read(struct rw_semaphore *sem)
|
||||
}
|
||||
}
|
||||
|
||||
static inline int __down_read_interruptible(struct rw_semaphore *sem)
|
||||
{
|
||||
if (!rwsem_read_trylock(sem)) {
|
||||
if (IS_ERR(rwsem_down_read_slowpath(sem, TASK_INTERRUPTIBLE)))
|
||||
return -EINTR;
|
||||
DEBUG_RWSEMS_WARN_ON(!is_rwsem_reader_owned(sem), sem);
|
||||
} else {
|
||||
rwsem_set_reader_owned(sem);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int __down_read_killable(struct rw_semaphore *sem)
|
||||
{
|
||||
if (!rwsem_read_trylock(sem)) {
|
||||
@@ -1504,6 +1516,20 @@ void __sched down_read(struct rw_semaphore *sem)
|
||||
}
|
||||
EXPORT_SYMBOL(down_read);
|
||||
|
||||
int __sched down_read_interruptible(struct rw_semaphore *sem)
|
||||
{
|
||||
might_sleep();
|
||||
rwsem_acquire_read(&sem->dep_map, 0, 0, _RET_IP_);
|
||||
|
||||
if (LOCK_CONTENDED_RETURN(sem, __down_read_trylock, __down_read_interruptible)) {
|
||||
rwsem_release(&sem->dep_map, _RET_IP_);
|
||||
return -EINTR;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(down_read_interruptible);
|
||||
|
||||
int __sched down_read_killable(struct rw_semaphore *sem)
|
||||
{
|
||||
might_sleep();
|
||||
@@ -1616,6 +1642,20 @@ void down_read_nested(struct rw_semaphore *sem, int subclass)
|
||||
}
|
||||
EXPORT_SYMBOL(down_read_nested);
|
||||
|
||||
int down_read_killable_nested(struct rw_semaphore *sem, int subclass)
|
||||
{
|
||||
might_sleep();
|
||||
rwsem_acquire_read(&sem->dep_map, subclass, 0, _RET_IP_);
|
||||
|
||||
if (LOCK_CONTENDED_RETURN(sem, __down_read_trylock, __down_read_killable)) {
|
||||
rwsem_release(&sem->dep_map, _RET_IP_);
|
||||
return -EINTR;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(down_read_killable_nested);
|
||||
|
||||
void _down_write_nest_lock(struct rw_semaphore *sem, struct lockdep_map *nest)
|
||||
{
|
||||
might_sleep();
|
||||
|
Reference in New Issue
Block a user