manage.c (c900529f3d9161bfde5cca0754f83b4d3c3e0220) manage.c (a9da6ddaef9ef7d9afd3f89e447c60e38f74bf44)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (C) 1992, 1998-2006 Linus Torvalds, Ingo Molnar
4 * Copyright (C) 2005-2006 Thomas Gleixner
5 *
6 * This file contains driver APIs to the irq subsystem.
7 */
8

--- 1838 unchanged lines hidden (view full) ---

1847 chip_bus_sync_unlock(desc);
1848 mutex_unlock(&desc->request_mutex);
1849
1850out_thread:
1851 if (new->thread) {
1852 struct task_struct *t = new->thread;
1853
1854 new->thread = NULL;
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (C) 1992, 1998-2006 Linus Torvalds, Ingo Molnar
4 * Copyright (C) 2005-2006 Thomas Gleixner
5 *
6 * This file contains driver APIs to the irq subsystem.
7 */
8

--- 1838 unchanged lines hidden (view full) ---

1847 chip_bus_sync_unlock(desc);
1848 mutex_unlock(&desc->request_mutex);
1849
1850out_thread:
1851 if (new->thread) {
1852 struct task_struct *t = new->thread;
1853
1854 new->thread = NULL;
1855 kthread_stop(t);
1856 put_task_struct(t);
1855 kthread_stop_put(t);
1857 }
1858 if (new->secondary && new->secondary->thread) {
1859 struct task_struct *t = new->secondary->thread;
1860
1861 new->secondary->thread = NULL;
1856 }
1857 if (new->secondary && new->secondary->thread) {
1858 struct task_struct *t = new->secondary->thread;
1859
1860 new->secondary->thread = NULL;
1862 kthread_stop(t);
1863 put_task_struct(t);
1861 kthread_stop_put(t);
1864 }
1865out_mput:
1866 module_put(desc->owner);
1867 return ret;
1868}
1869
1870/*
1871 * Internal function to unregister an irqaction - used to free

--- 94 unchanged lines hidden (view full) ---

1966
1967 /*
1968 * The action has already been removed above, but the thread writes
1969 * its oneshot mask bit when it completes. Though request_mutex is
1970 * held across this which prevents __setup_irq() from handing out
1971 * the same bit to a newly requested action.
1972 */
1973 if (action->thread) {
1862 }
1863out_mput:
1864 module_put(desc->owner);
1865 return ret;
1866}
1867
1868/*
1869 * Internal function to unregister an irqaction - used to free

--- 94 unchanged lines hidden (view full) ---

1964
1965 /*
1966 * The action has already been removed above, but the thread writes
1967 * its oneshot mask bit when it completes. Though request_mutex is
1968 * held across this which prevents __setup_irq() from handing out
1969 * the same bit to a newly requested action.
1970 */
1971 if (action->thread) {
1974 kthread_stop(action->thread);
1975 put_task_struct(action->thread);
1976 if (action->secondary && action->secondary->thread) {
1977 kthread_stop(action->secondary->thread);
1978 put_task_struct(action->secondary->thread);
1979 }
1972 kthread_stop_put(action->thread);
1973 if (action->secondary && action->secondary->thread)
1974 kthread_stop_put(action->secondary->thread);
1980 }
1981
1982 /* Last action releases resources */
1983 if (!desc->action) {
1984 /*
1985 * Reacquire bus lock as irq_release_resources() might
1986 * require it to deallocate resources over the slow bus.
1987 */

--- 955 unchanged lines hidden ---
1975 }
1976
1977 /* Last action releases resources */
1978 if (!desc->action) {
1979 /*
1980 * Reacquire bus lock as irq_release_resources() might
1981 * require it to deallocate resources over the slow bus.
1982 */

--- 955 unchanged lines hidden ---