aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/lasat/picvue_proc.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-01-12 20:11:47 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2016-01-12 20:11:47 -0500
commit33caf82acf4dc420bf0f0136b886f7b27ecf90c5 (patch)
treeb24b0b5c8f257ae7db3b8df939821a0856869895 /arch/mips/lasat/picvue_proc.c
parentca9706a282943899981e83604f2ed13e88ce4239 (diff)
parentbbddca8e8fac07ece3938e03526b5d00fa791a4c (diff)
Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull misc vfs updates from Al Viro: "All kinds of stuff. That probably should've been 5 or 6 separate branches, but by the time I'd realized how large and mixed that bag had become it had been too close to -final to play with rebasing. Some fs/namei.c cleanups there, memdup_user_nul() introduction and switching open-coded instances, burying long-dead code, whack-a-mole of various kinds, several new helpers for ->llseek(), assorted cleanups and fixes from various people, etc. One piece probably deserves special mention - Neil's lookup_one_len_unlocked(). Similar to lookup_one_len(), but gets called without ->i_mutex and tries to avoid ever taking it. That, of course, means that it's not useful for any directory modifications, but things like getting inode attributes in nfds readdirplus are fine with that. I really should've asked for moratorium on lookup-related changes this cycle, but since I hadn't done that early enough... I *am* asking for that for the coming cycle, though - I'm going to try and get conversion of i_mutex to rwsem with ->lookup() done under lock taken shared. There will be a patch closer to the end of the window, along the lines of the one Linus had posted last May - mechanical conversion of ->i_mutex accesses to inode_lock()/inode_unlock()/inode_trylock()/ inode_is_locked()/inode_lock_nested(). To quote Linus back then: ----- | This is an automated patch using | | sed 's/mutex_lock(&\(.*\)->i_mutex)/inode_lock(\1)/' | sed 's/mutex_unlock(&\(.*\)->i_mutex)/inode_unlock(\1)/' | sed 's/mutex_lock_nested(&\(.*\)->i_mutex,[ ]*I_MUTEX_\([A-Z0-9_]*\))/inode_lock_nested(\1, I_MUTEX_\2)/' | sed 's/mutex_is_locked(&\(.*\)->i_mutex)/inode_is_locked(\1)/' | sed 's/mutex_trylock(&\(.*\)->i_mutex)/inode_trylock(\1)/' | | with a very few manual fixups ----- I'm going to send that once the ->i_mutex-affecting stuff in -next gets mostly merged (or when Linus says he's about to stop taking merges)" * 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (63 commits) nfsd: don't hold i_mutex over userspace upcalls fs:affs:Replace time_t with time64_t fs/9p: use fscache mutex rather than spinlock proc: add a reschedule point in proc_readfd_common() logfs: constify logfs_block_ops structures fcntl: allow to set O_DIRECT flag on pipe fs: __generic_file_splice_read retry lookup on AOP_TRUNCATED_PAGE fs: xattr: Use kvfree() [s390] page_to_phys() always returns a multiple of PAGE_SIZE nbd: use ->compat_ioctl() fs: use block_device name vsprintf helper lib/vsprintf: add %*pg format specifier fs: use gendisk->disk_name where possible poll: plug an unused argument to do_poll amdkfd: don't open-code memdup_user() cdrom: don't open-code memdup_user() rsxx: don't open-code memdup_user() mtip32xx: don't open-code memdup_user() [um] mconsole: don't open-code memdup_user_nul() [um] hostaudio: don't open-code memdup_user() ...
Diffstat (limited to 'arch/mips/lasat/picvue_proc.c')
-rw-r--r--arch/mips/lasat/picvue_proc.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/arch/mips/lasat/picvue_proc.c b/arch/mips/lasat/picvue_proc.c
index 2bcd8391bc93..b42095880667 100644
--- a/arch/mips/lasat/picvue_proc.c
+++ b/arch/mips/lasat/picvue_proc.c
@@ -22,7 +22,6 @@
22static DEFINE_MUTEX(pvc_mutex); 22static DEFINE_MUTEX(pvc_mutex);
23static char pvc_lines[PVC_NLINES][PVC_LINELEN+1]; 23static char pvc_lines[PVC_NLINES][PVC_LINELEN+1];
24static int pvc_linedata[PVC_NLINES]; 24static int pvc_linedata[PVC_NLINES];
25static struct proc_dir_entry *pvc_display_dir;
26static char *pvc_linename[PVC_NLINES] = {"line1", "line2"}; 25static char *pvc_linename[PVC_NLINES] = {"line1", "line2"};
27#define DISPLAY_DIR_NAME "display" 26#define DISPLAY_DIR_NAME "display"
28static int scroll_dir, scroll_interval; 27static int scroll_dir, scroll_interval;
@@ -169,22 +168,17 @@ void pvc_proc_timerfunc(unsigned long data)
169 168
170static void pvc_proc_cleanup(void) 169static void pvc_proc_cleanup(void)
171{ 170{
172 int i; 171 remove_proc_subtree(DISPLAY_DIR_NAME, NULL);
173 for (i = 0; i < PVC_NLINES; i++)
174 remove_proc_entry(pvc_linename[i], pvc_display_dir);
175 remove_proc_entry("scroll", pvc_display_dir);
176 remove_proc_entry(DISPLAY_DIR_NAME, NULL);
177
178 del_timer_sync(&timer); 172 del_timer_sync(&timer);
179} 173}
180 174
181static int __init pvc_proc_init(void) 175static int __init pvc_proc_init(void)
182{ 176{
183 struct proc_dir_entry *proc_entry; 177 struct proc_dir_entry *dir, *proc_entry;
184 int i; 178 int i;
185 179
186 pvc_display_dir = proc_mkdir(DISPLAY_DIR_NAME, NULL); 180 dir = proc_mkdir(DISPLAY_DIR_NAME, NULL);
187 if (pvc_display_dir == NULL) 181 if (dir == NULL)
188 goto error; 182 goto error;
189 183
190 for (i = 0; i < PVC_NLINES; i++) { 184 for (i = 0; i < PVC_NLINES; i++) {
@@ -192,12 +186,12 @@ static int __init pvc_proc_init(void)
192 pvc_linedata[i] = i; 186 pvc_linedata[i] = i;
193 } 187 }
194 for (i = 0; i < PVC_NLINES; i++) { 188 for (i = 0; i < PVC_NLINES; i++) {
195 proc_entry = proc_create_data(pvc_linename[i], 0644, pvc_display_dir, 189 proc_entry = proc_create_data(pvc_linename[i], 0644, dir,
196 &pvc_line_proc_fops, &pvc_linedata[i]); 190 &pvc_line_proc_fops, &pvc_linedata[i]);
197 if (proc_entry == NULL) 191 if (proc_entry == NULL)
198 goto error; 192 goto error;
199 } 193 }
200 proc_entry = proc_create("scroll", 0644, pvc_display_dir, 194 proc_entry = proc_create("scroll", 0644, dir,
201 &pvc_scroll_proc_fops); 195 &pvc_scroll_proc_fops);
202 if (proc_entry == NULL) 196 if (proc_entry == NULL)
203 goto error; 197 goto error;