From: Emese Revfy <re.emese@gmail.com>
To: lenb@kernel.org, astarikovskiy@suse.de, gregkh@suse.de,
mchehab@infradead.org, linville@tuxdriver.com, miklos@szeredi.hu,
davem@davemloft.net, rostedt@goodmis.org, fweisbec@gmail.com,
mingo@redhat.com, avi@redhat.com, mtosatti@redhat.com,
torvalds@linux-foundation.org, linux-kernel@vger.kernel.org,
netdev@vger.kernel.org
Subject: Re: [PATCH 11/31] Constify struct file_operations for 2.6.32 v1
Date: Sat, 05 Dec 2009 00:07:44 +0100 [thread overview]
Message-ID: <4B199640.2010402@gmail.com> (raw)
In-Reply-To: <4B198C43.50205@gmail.com>
Added netdev@vger.kernel.org to CC.
> From: Emese Revfy <re.emese@gmail.com>
>
> Constify struct file_operations with some exceptions.
>
> Signed-off-by: Emese Revfy <re.emese@gmail.com>
> ---
> drivers/acpi/battery.c | 2 +-
> drivers/char/pty.c | 16 +++++++++---
> drivers/char/tty_io.c | 28 ++++-----------------
> drivers/media/dvb/dvb-core/dvbdev.c | 1 +
> drivers/net/wireless/b43/debugfs.c | 2 +-
> drivers/net/wireless/b43legacy/debugfs.c | 2 +-
> drivers/net/wireless/libertas/debugfs.c | 2 +-
> drivers/staging/b3dfg/b3dfg.c | 2 +-
> drivers/staging/dream/qdsp5/adsp_driver.c | 2 +-
> drivers/staging/dream/qdsp5/audio_aac.c | 2 +-
> drivers/staging/dream/qdsp5/audio_amrnb.c | 2 +-
> drivers/staging/dream/qdsp5/audio_evrc.c | 2 +-
> drivers/staging/dream/qdsp5/audio_in.c | 4 +-
> drivers/staging/dream/qdsp5/audio_mp3.c | 2 +-
> drivers/staging/dream/qdsp5/audio_out.c | 4 +-
> drivers/staging/dream/qdsp5/audio_qcelp.c | 2 +-
> drivers/staging/dream/qdsp5/snd.c | 2 +-
> drivers/staging/dream/smd/smd_qmi.c | 2 +-
> drivers/staging/dream/smd/smd_rpcrouter_device.c | 4 +-
> drivers/staging/panel/panel.c | 4 +-
> drivers/staging/poch/poch.c | 2 +-
> drivers/staging/sep/sep_driver.c | 2 +-
> drivers/staging/vme/devices/vme_user.c | 2 +-
> fs/fuse/cuse.c | 20 +++++++++------
> fs/fuse/dev.c | 8 +++---
> fs/fuse/fuse_i.h | 10 ++++++++
> include/linux/tty.h | 14 ++++++++++-
> include/net/tcp.h | 1 +
> include/net/udp.h | 1 +
> kernel/trace/trace_events.c | 2 +
> virt/kvm/kvm_main.c | 3 ++
> 31 files changed, 89 insertions(+), 63 deletions(-)
>
> diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
> index 3f4602b..2e41d36 100644
> --- a/drivers/acpi/battery.c
> +++ b/drivers/acpi/battery.c
> @@ -763,7 +763,7 @@ DECLARE_FILE_FUNCTIONS(alarm);
> }
>
> static struct battery_file {
> - struct file_operations ops;
> + const struct file_operations ops;
> mode_t mode;
> const char *name;
> } acpi_battery_file[] = {
> diff --git a/drivers/char/pty.c b/drivers/char/pty.c
> index 62f282e..d39c67b 100644
> --- a/drivers/char/pty.c
> +++ b/drivers/char/pty.c
> @@ -682,7 +682,18 @@ static int ptmx_open(struct inode *inode, struct file *filp)
> return ret;
> }
>
> -static struct file_operations ptmx_fops;
> +static const struct file_operations ptmx_fops = {
> + .llseek = no_llseek,
> + .read = tty_read,
> + .write = tty_write,
> + .poll = tty_poll,
> + .unlocked_ioctl = tty_ioctl,
> + .compat_ioctl = tty_compat_ioctl,
> + .open = ptmx_open,
> + .release = tty_release,
> + .fasync = tty_fasync,
> +};
> +
>
> static void __init unix98_pty_init(void)
> {
> @@ -736,9 +747,6 @@ static void __init unix98_pty_init(void)
> register_sysctl_table(pty_root_table);
>
> /* Now create the /dev/ptmx special device */
> - tty_default_fops(&ptmx_fops);
> - ptmx_fops.open = ptmx_open;
> -
> cdev_init(&ptmx_cdev, &ptmx_fops);
> if (cdev_add(&ptmx_cdev, MKDEV(TTYAUX_MAJOR, 2), 1) ||
> register_chrdev_region(MKDEV(TTYAUX_MAJOR, 2), 1, "/dev/ptmx") < 0)
> diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
> index 59499ee..9459c2d 100644
> --- a/drivers/char/tty_io.c
> +++ b/drivers/char/tty_io.c
> @@ -136,21 +136,10 @@ LIST_HEAD(tty_drivers); /* linked list of tty drivers */
> DEFINE_MUTEX(tty_mutex);
> EXPORT_SYMBOL(tty_mutex);
>
> -static ssize_t tty_read(struct file *, char __user *, size_t, loff_t *);
> -static ssize_t tty_write(struct file *, const char __user *, size_t, loff_t *);
> ssize_t redirected_tty_write(struct file *, const char __user *,
> size_t, loff_t *);
> -static unsigned int tty_poll(struct file *, poll_table *);
> static int tty_open(struct inode *, struct file *);
> -static int tty_release(struct inode *, struct file *);
> long tty_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
> -#ifdef CONFIG_COMPAT
> -static long tty_compat_ioctl(struct file *file, unsigned int cmd,
> - unsigned long arg);
> -#else
> -#define tty_compat_ioctl NULL
> -#endif
> -static int tty_fasync(int fd, struct file *filp, int on);
> static void release_tty(struct tty_struct *tty, int idx);
> static void __proc_set_tty(struct task_struct *tsk, struct tty_struct *tty);
> static void proc_set_tty(struct task_struct *tsk, struct tty_struct *tty);
> @@ -870,7 +859,7 @@ EXPORT_SYMBOL(start_tty);
> * read calls may be outstanding in parallel.
> */
>
> -static ssize_t tty_read(struct file *file, char __user *buf, size_t count,
> +ssize_t tty_read(struct file *file, char __user *buf, size_t count,
> loff_t *ppos)
> {
> int i;
> @@ -1045,7 +1034,7 @@ void tty_write_message(struct tty_struct *tty, char *msg)
> * write method will not be invoked in parallel for each device.
> */
>
> -static ssize_t tty_write(struct file *file, const char __user *buf,
> +ssize_t tty_write(struct file *file, const char __user *buf,
> size_t count, loff_t *ppos)
> {
> struct tty_struct *tty;
> @@ -1865,7 +1854,7 @@ static int tty_open(struct inode *inode, struct file *filp)
> * Takes bkl. See tty_release_dev
> */
>
> -static int tty_release(struct inode *inode, struct file *filp)
> +int tty_release(struct inode *inode, struct file *filp)
> {
> lock_kernel();
> tty_release_dev(filp);
> @@ -1885,7 +1874,7 @@ static int tty_release(struct inode *inode, struct file *filp)
> * may be re-entered freely by other callers.
> */
>
> -static unsigned int tty_poll(struct file *filp, poll_table *wait)
> +unsigned int tty_poll(struct file *filp, poll_table *wait)
> {
> struct tty_struct *tty;
> struct tty_ldisc *ld;
> @@ -1902,7 +1891,7 @@ static unsigned int tty_poll(struct file *filp, poll_table *wait)
> return ret;
> }
>
> -static int tty_fasync(int fd, struct file *filp, int on)
> +int tty_fasync(int fd, struct file *filp, int on)
> {
> struct tty_struct *tty;
> unsigned long flags;
> @@ -2579,7 +2568,7 @@ long tty_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
> }
>
> #ifdef CONFIG_COMPAT
> -static long tty_compat_ioctl(struct file *file, unsigned int cmd,
> +long tty_compat_ioctl(struct file *file, unsigned int cmd,
> unsigned long arg)
> {
> struct inode *inode = file->f_dentry->d_inode;
> @@ -3046,11 +3035,6 @@ struct tty_struct *get_current_tty(void)
> }
> EXPORT_SYMBOL_GPL(get_current_tty);
>
> -void tty_default_fops(struct file_operations *fops)
> -{
> - *fops = tty_fops;
> -}
> -
> /*
> * Initialize the console device. This is called *early*, so
> * we can't necessarily depend on lots of kernel help here.
> diff --git a/drivers/media/dvb/dvb-core/dvbdev.c b/drivers/media/dvb/dvb-core/dvbdev.c
> index 94159b9..3eadb2e 100644
> --- a/drivers/media/dvb/dvb-core/dvbdev.c
> +++ b/drivers/media/dvb/dvb-core/dvbdev.c
> @@ -191,6 +191,7 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,
> const struct dvb_device *template, void *priv, int type)
> {
> struct dvb_device *dvbdev;
> + /* cannot be const */
> struct file_operations *dvbdevfops;
> struct device *clsdev;
> int minor;
> diff --git a/drivers/net/wireless/b43/debugfs.c b/drivers/net/wireless/b43/debugfs.c
> index 80b19a4..dab3a45 100644
> --- a/drivers/net/wireless/b43/debugfs.c
> +++ b/drivers/net/wireless/b43/debugfs.c
> @@ -43,7 +43,7 @@ static struct dentry *rootdir;
> struct b43_debugfs_fops {
> ssize_t (*read)(struct b43_wldev *dev, char *buf, size_t bufsize);
> int (*write)(struct b43_wldev *dev, const char *buf, size_t count);
> - struct file_operations fops;
> + const struct file_operations fops;
> /* Offset of struct b43_dfs_file in struct b43_dfsentry */
> size_t file_struct_offset;
> };
> diff --git a/drivers/net/wireless/b43legacy/debugfs.c b/drivers/net/wireless/b43legacy/debugfs.c
> index 1f85ac5..c99b4b4 100644
> --- a/drivers/net/wireless/b43legacy/debugfs.c
> +++ b/drivers/net/wireless/b43legacy/debugfs.c
> @@ -44,7 +44,7 @@ static struct dentry *rootdir;
> struct b43legacy_debugfs_fops {
> ssize_t (*read)(struct b43legacy_wldev *dev, char *buf, size_t bufsize);
> int (*write)(struct b43legacy_wldev *dev, const char *buf, size_t count);
> - struct file_operations fops;
> + const struct file_operations fops;
> /* Offset of struct b43legacy_dfs_file in struct b43legacy_dfsentry */
> size_t file_struct_offset;
> /* Take wl->irq_lock before calling read/write? */
> diff --git a/drivers/net/wireless/libertas/debugfs.c b/drivers/net/wireless/libertas/debugfs.c
> index 893a55c..7f66a50 100644
> --- a/drivers/net/wireless/libertas/debugfs.c
> +++ b/drivers/net/wireless/libertas/debugfs.c
> @@ -708,7 +708,7 @@ out_unlock:
> struct lbs_debugfs_files {
> const char *name;
> int perm;
> - struct file_operations fops;
> + const struct file_operations fops;
> };
>
> static const struct lbs_debugfs_files debugfs_files[] = {
> diff --git a/drivers/staging/b3dfg/b3dfg.c b/drivers/staging/b3dfg/b3dfg.c
> index cda26bb..25f3ec6 100644
> --- a/drivers/staging/b3dfg/b3dfg.c
> +++ b/drivers/staging/b3dfg/b3dfg.c
> @@ -848,7 +848,7 @@ static int b3dfg_mmap(struct file *filp, struct vm_area_struct *vma)
> return r;
> }
>
> -static struct file_operations b3dfg_fops = {
> +static const struct file_operations b3dfg_fops = {
> .owner = THIS_MODULE,
> .open = b3dfg_open,
> .release = b3dfg_release,
> diff --git a/drivers/staging/dream/qdsp5/adsp_driver.c b/drivers/staging/dream/qdsp5/adsp_driver.c
> index e55a0db..577b776 100644
> --- a/drivers/staging/dream/qdsp5/adsp_driver.c
> +++ b/drivers/staging/dream/qdsp5/adsp_driver.c
> @@ -576,7 +576,7 @@ static struct adsp_device *inode_to_device(struct inode *inode)
> static dev_t adsp_devno;
> static struct class *adsp_class;
>
> -static struct file_operations adsp_fops = {
> +static const struct file_operations adsp_fops = {
> .owner = THIS_MODULE,
> .open = adsp_open,
> .unlocked_ioctl = adsp_ioctl,
> diff --git a/drivers/staging/dream/qdsp5/audio_aac.c b/drivers/staging/dream/qdsp5/audio_aac.c
> index ad2390f..4116ee8 100644
> --- a/drivers/staging/dream/qdsp5/audio_aac.c
> +++ b/drivers/staging/dream/qdsp5/audio_aac.c
> @@ -1022,7 +1022,7 @@ done:
> return rc;
> }
>
> -static struct file_operations audio_aac_fops = {
> +static const struct file_operations audio_aac_fops = {
> .owner = THIS_MODULE,
> .open = audio_open,
> .release = audio_release,
> diff --git a/drivers/staging/dream/qdsp5/audio_amrnb.c b/drivers/staging/dream/qdsp5/audio_amrnb.c
> index cd818a5..870b37b 100644
> --- a/drivers/staging/dream/qdsp5/audio_amrnb.c
> +++ b/drivers/staging/dream/qdsp5/audio_amrnb.c
> @@ -833,7 +833,7 @@ done:
> return rc;
> }
>
> -static struct file_operations audio_amrnb_fops = {
> +static const struct file_operations audio_amrnb_fops = {
> .owner = THIS_MODULE,
> .open = audamrnb_open,
> .release = audamrnb_release,
> diff --git a/drivers/staging/dream/qdsp5/audio_evrc.c b/drivers/staging/dream/qdsp5/audio_evrc.c
> index 4b43e18..cedafda 100644
> --- a/drivers/staging/dream/qdsp5/audio_evrc.c
> +++ b/drivers/staging/dream/qdsp5/audio_evrc.c
> @@ -805,7 +805,7 @@ dma_fail:
> return rc;
> }
>
> -static struct file_operations audio_evrc_fops = {
> +static const struct file_operations audio_evrc_fops = {
> .owner = THIS_MODULE,
> .open = audevrc_open,
> .release = audevrc_release,
> diff --git a/drivers/staging/dream/qdsp5/audio_in.c b/drivers/staging/dream/qdsp5/audio_in.c
> index 3d950a2..9431118 100644
> --- a/drivers/staging/dream/qdsp5/audio_in.c
> +++ b/drivers/staging/dream/qdsp5/audio_in.c
> @@ -913,7 +913,7 @@ static int audpre_open(struct inode *inode, struct file *file)
> return 0;
> }
>
> -static struct file_operations audio_fops = {
> +static const struct file_operations audio_fops = {
> .owner = THIS_MODULE,
> .open = audio_in_open,
> .release = audio_in_release,
> @@ -922,7 +922,7 @@ static struct file_operations audio_fops = {
> .unlocked_ioctl = audio_in_ioctl,
> };
>
> -static struct file_operations audpre_fops = {
> +static const struct file_operations audpre_fops = {
> .owner = THIS_MODULE,
> .open = audpre_open,
> .unlocked_ioctl = audpre_ioctl,
> diff --git a/drivers/staging/dream/qdsp5/audio_mp3.c b/drivers/staging/dream/qdsp5/audio_mp3.c
> index b95574f..286c2f4 100644
> --- a/drivers/staging/dream/qdsp5/audio_mp3.c
> +++ b/drivers/staging/dream/qdsp5/audio_mp3.c
> @@ -941,7 +941,7 @@ done:
> return rc;
> }
>
> -static struct file_operations audio_mp3_fops = {
> +static const struct file_operations audio_mp3_fops = {
> .owner = THIS_MODULE,
> .open = audio_open,
> .release = audio_release,
> diff --git a/drivers/staging/dream/qdsp5/audio_out.c b/drivers/staging/dream/qdsp5/audio_out.c
> index d1adcf6..f8f9833 100644
> --- a/drivers/staging/dream/qdsp5/audio_out.c
> +++ b/drivers/staging/dream/qdsp5/audio_out.c
> @@ -810,7 +810,7 @@ static int audpp_open(struct inode *inode, struct file *file)
> return 0;
> }
>
> -static struct file_operations audio_fops = {
> +static const struct file_operations audio_fops = {
> .owner = THIS_MODULE,
> .open = audio_open,
> .release = audio_release,
> @@ -819,7 +819,7 @@ static struct file_operations audio_fops = {
> .unlocked_ioctl = audio_ioctl,
> };
>
> -static struct file_operations audpp_fops = {
> +static const struct file_operations audpp_fops = {
> .owner = THIS_MODULE,
> .open = audpp_open,
> .unlocked_ioctl = audpp_ioctl,
> diff --git a/drivers/staging/dream/qdsp5/audio_qcelp.c b/drivers/staging/dream/qdsp5/audio_qcelp.c
> index f0f50e3..f6b9dbc 100644
> --- a/drivers/staging/dream/qdsp5/audio_qcelp.c
> +++ b/drivers/staging/dream/qdsp5/audio_qcelp.c
> @@ -816,7 +816,7 @@ err:
> return rc;
> }
>
> -static struct file_operations audio_qcelp_fops = {
> +static const struct file_operations audio_qcelp_fops = {
> .owner = THIS_MODULE,
> .open = audqcelp_open,
> .release = audqcelp_release,
> diff --git a/drivers/staging/dream/qdsp5/snd.c b/drivers/staging/dream/qdsp5/snd.c
> index 037d7ff..5469ec3 100644
> --- a/drivers/staging/dream/qdsp5/snd.c
> +++ b/drivers/staging/dream/qdsp5/snd.c
> @@ -242,7 +242,7 @@ err:
> return rc;
> }
>
> -static struct file_operations snd_fops = {
> +static const struct file_operations snd_fops = {
> .owner = THIS_MODULE,
> .open = snd_open,
> .release = snd_release,
> diff --git a/drivers/staging/dream/smd/smd_qmi.c b/drivers/staging/dream/smd/smd_qmi.c
> index d4e7d88..0ea632a 100644
> --- a/drivers/staging/dream/smd/smd_qmi.c
> +++ b/drivers/staging/dream/smd/smd_qmi.c
> @@ -793,7 +793,7 @@ static int qmi_release(struct inode *ip, struct file *fp)
> return 0;
> }
>
> -static struct file_operations qmi_fops = {
> +static const struct file_operations qmi_fops = {
> .owner = THIS_MODULE,
> .read = qmi_read,
> .write = qmi_write,
> diff --git a/drivers/staging/dream/smd/smd_rpcrouter_device.c b/drivers/staging/dream/smd/smd_rpcrouter_device.c
> index cd3910b..ff053d3 100644
> --- a/drivers/staging/dream/smd/smd_rpcrouter_device.c
> +++ b/drivers/staging/dream/smd/smd_rpcrouter_device.c
> @@ -214,7 +214,7 @@ static long rpcrouter_ioctl(struct file *filp, unsigned int cmd,
> return rc;
> }
>
> -static struct file_operations rpcrouter_server_fops = {
> +static const struct file_operations rpcrouter_server_fops = {
> .owner = THIS_MODULE,
> .open = rpcrouter_open,
> .release = rpcrouter_release,
> @@ -224,7 +224,7 @@ static struct file_operations rpcrouter_server_fops = {
> .unlocked_ioctl = rpcrouter_ioctl,
> };
>
> -static struct file_operations rpcrouter_router_fops = {
> +static const struct file_operations rpcrouter_router_fops = {
> .owner = THIS_MODULE,
> .open = rpcrouter_open,
> .release = rpcrouter_release,
> diff --git a/drivers/staging/panel/panel.c b/drivers/staging/panel/panel.c
> index 4ce399b..225f9bc 100644
> --- a/drivers/staging/panel/panel.c
> +++ b/drivers/staging/panel/panel.c
> @@ -1305,7 +1305,7 @@ static int lcd_release(struct inode *inode, struct file *file)
> return 0;
> }
>
> -static struct file_operations lcd_fops = {
> +static const struct file_operations lcd_fops = {
> .write = lcd_write,
> .open = lcd_open,
> .release = lcd_release,
> @@ -1565,7 +1565,7 @@ static int keypad_release(struct inode *inode, struct file *file)
> return 0;
> }
>
> -static struct file_operations keypad_fops = {
> +static const struct file_operations keypad_fops = {
> .read = keypad_read, /* read */
> .open = keypad_open, /* open */
> .release = keypad_release, /* close */
> diff --git a/drivers/staging/poch/poch.c b/drivers/staging/poch/poch.c
> index 2eb8e3d..57616a7 100644
> --- a/drivers/staging/poch/poch.c
> +++ b/drivers/staging/poch/poch.c
> @@ -1057,7 +1057,7 @@ static int poch_ioctl(struct inode *inode, struct file *filp,
> return 0;
> }
>
> -static struct file_operations poch_fops = {
> +static const struct file_operations poch_fops = {
> .owner = THIS_MODULE,
> .open = poch_open,
> .release = poch_release,
> diff --git a/drivers/staging/sep/sep_driver.c b/drivers/staging/sep/sep_driver.c
> index f890a16..509ece8 100644
> --- a/drivers/staging/sep/sep_driver.c
> +++ b/drivers/staging/sep/sep_driver.c
> @@ -2603,7 +2603,7 @@ static struct pci_driver sep_pci_driver = {
> static dev_t sep_devno;
>
> /* the files operations structure of the driver */
> -static struct file_operations sep_file_operations = {
> +static const struct file_operations sep_file_operations = {
> .owner = THIS_MODULE,
> .ioctl = sep_ioctl,
> .poll = sep_poll,
> diff --git a/drivers/staging/vme/devices/vme_user.c b/drivers/staging/vme/devices/vme_user.c
> index 7891288..8e31300 100644
> --- a/drivers/staging/vme/devices/vme_user.c
> +++ b/drivers/staging/vme/devices/vme_user.c
> @@ -136,7 +136,7 @@ static int vme_user_ioctl(struct inode *, struct file *, unsigned int,
> static int __init vme_user_probe(struct device *, int, int);
> static int __exit vme_user_remove(struct device *, int, int);
>
> -static struct file_operations vme_user_fops = {
> +static const struct file_operations vme_user_fops = {
> .open = vme_user_open,
> .release = vme_user_release,
> .read = vme_user_read,
> diff --git a/fs/fuse/cuse.c b/fs/fuse/cuse.c
> index de792dc..40bbb90 100644
> --- a/fs/fuse/cuse.c
> +++ b/fs/fuse/cuse.c
> @@ -528,8 +528,18 @@ static int cuse_channel_release(struct inode *inode, struct file *file)
> return rc;
> }
>
> -static struct file_operations cuse_channel_fops; /* initialized during init */
> -
> +static const struct file_operations cuse_channel_fops = { /* initialized during init */
> + .owner = THIS_MODULE,
> + .llseek = no_llseek,
> + .read = do_sync_read,
> + .aio_read = fuse_dev_read,
> + .write = do_sync_write,
> + .aio_write = fuse_dev_write,
> + .poll = fuse_dev_poll,
> + .open = cuse_channel_open,
> + .release = cuse_channel_release,
> + .fasync = fuse_dev_fasync,
> +};
>
> /**************************************************************************
> * Misc stuff and module initializatiion
> @@ -575,12 +585,6 @@ static int __init cuse_init(void)
> for (i = 0; i < CUSE_CONNTBL_LEN; i++)
> INIT_LIST_HEAD(&cuse_conntbl[i]);
>
> - /* inherit and extend fuse_dev_operations */
> - cuse_channel_fops = fuse_dev_operations;
> - cuse_channel_fops.owner = THIS_MODULE;
> - cuse_channel_fops.open = cuse_channel_open;
> - cuse_channel_fops.release = cuse_channel_release;
> -
> cuse_class = class_create(THIS_MODULE, "cuse");
> if (IS_ERR(cuse_class))
> return PTR_ERR(cuse_class);
> diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
> index 51d9e33..03c8f95 100644
> --- a/fs/fuse/dev.c
> +++ b/fs/fuse/dev.c
> @@ -745,7 +745,7 @@ __releases(&fc->lock)
> * request_end(). Otherwise add it to the processing list, and set
> * the 'sent' flag.
> */
> -static ssize_t fuse_dev_read(struct kiocb *iocb, const struct iovec *iov,
> +ssize_t fuse_dev_read(struct kiocb *iocb, const struct iovec *iov,
> unsigned long nr_segs, loff_t pos)
> {
> int err;
> @@ -987,7 +987,7 @@ static int copy_out_args(struct fuse_copy_state *cs, struct fuse_out *out,
> * it from the list and copy the rest of the buffer to the request.
> * The request is finished by calling request_end()
> */
> -static ssize_t fuse_dev_write(struct kiocb *iocb, const struct iovec *iov,
> +ssize_t fuse_dev_write(struct kiocb *iocb, const struct iovec *iov,
> unsigned long nr_segs, loff_t pos)
> {
> int err;
> @@ -1084,7 +1084,7 @@ static ssize_t fuse_dev_write(struct kiocb *iocb, const struct iovec *iov,
> return err;
> }
>
> -static unsigned fuse_dev_poll(struct file *file, poll_table *wait)
> +unsigned fuse_dev_poll(struct file *file, poll_table *wait)
> {
> unsigned mask = POLLOUT | POLLWRNORM;
> struct fuse_conn *fc = fuse_get_conn(file);
> @@ -1210,7 +1210,7 @@ int fuse_dev_release(struct inode *inode, struct file *file)
> }
> EXPORT_SYMBOL_GPL(fuse_dev_release);
>
> -static int fuse_dev_fasync(int fd, struct file *file, int on)
> +int fuse_dev_fasync(int fd, struct file *file, int on)
> {
> struct fuse_conn *fc = fuse_get_conn(file);
> if (!fc)
> diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
> index 01cc462..b11fe78 100644
> --- a/fs/fuse/fuse_i.h
> +++ b/fs/fuse/fuse_i.h
> @@ -521,6 +521,16 @@ extern const struct file_operations fuse_dev_operations;
>
> extern const struct dentry_operations fuse_dentry_operations;
>
> +extern ssize_t fuse_dev_read(struct kiocb *iocb, const struct iovec *iov,
> + unsigned long nr_segs, loff_t pos);
> +
> +extern ssize_t fuse_dev_write(struct kiocb *iocb, const struct iovec *iov,
> + unsigned long nr_segs, loff_t pos);
> +
> +extern unsigned fuse_dev_poll(struct file *file, poll_table *wait);
> +
> +extern int fuse_dev_fasync(int fd, struct file *file, int on);
> +
> /**
> * Inode to nodeid comparison.
> */
> diff --git a/include/linux/tty.h b/include/linux/tty.h
> index f0f43d0..caee8aa 100644
> --- a/include/linux/tty.h
> +++ b/include/linux/tty.h
> @@ -13,6 +13,7 @@
> #include <linux/tty_driver.h>
> #include <linux/tty_ldisc.h>
> #include <linux/mutex.h>
> +#include <linux/poll.h>
>
> #include <asm/system.h>
>
> @@ -432,7 +433,6 @@ extern int tty_perform_flush(struct tty_struct *tty, unsigned long arg);
> extern dev_t tty_devnum(struct tty_struct *tty);
> extern void proc_clear_tty(struct task_struct *p);
> extern struct tty_struct *get_current_tty(void);
> -extern void tty_default_fops(struct file_operations *fops);
> extern struct tty_struct *alloc_tty_struct(void);
> extern void free_tty_struct(struct tty_struct *tty);
> extern void initialize_tty_struct(struct tty_struct *tty,
> @@ -482,6 +482,18 @@ extern void tty_ldisc_begin(void);
> /* This last one is just for the tty layer internals and shouldn't be used elsewhere */
> extern void tty_ldisc_enable(struct tty_struct *tty);
>
> +/* tty_io.c */
> +extern ssize_t tty_read(struct file *, char __user *, size_t, loff_t *);
> +extern ssize_t tty_write(struct file *, const char __user *, size_t, loff_t *);
> +extern unsigned int tty_poll(struct file *, poll_table *);
> +#ifdef CONFIG_COMPAT
> +extern long tty_compat_ioctl(struct file *file, unsigned int cmd,
> + unsigned long arg);
> +#else
> +#define tty_compat_ioctl NULL
> +#endif
> +extern int tty_release(struct inode *, struct file *);
> +extern int tty_fasync(int fd, struct file *filp, int on);
>
> /* n_tty.c */
> extern struct tty_ldisc_ops tty_ldisc_N_TTY;
> diff --git a/include/net/tcp.h b/include/net/tcp.h
> index 03a49c7..e689dcf 100644
> --- a/include/net/tcp.h
> +++ b/include/net/tcp.h
> @@ -1414,6 +1414,7 @@ enum tcp_seq_states {
> struct tcp_seq_afinfo {
> char *name;
> sa_family_t family;
> + /* cannot be const */
> struct file_operations seq_fops;
> struct seq_operations seq_ops;
> };
> diff --git a/include/net/udp.h b/include/net/udp.h
> index f98abd2..2e6c0a3 100644
> --- a/include/net/udp.h
> +++ b/include/net/udp.h
> @@ -187,6 +187,7 @@ struct udp_seq_afinfo {
> char *name;
> sa_family_t family;
> struct udp_table *udp_table;
> + /* cannot be const */
> struct file_operations seq_fops;
> struct seq_operations seq_ops;
> };
> diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
> index d128f65..cfcc06e 100644
> --- a/kernel/trace/trace_events.c
> +++ b/kernel/trace/trace_events.c
> @@ -951,6 +951,8 @@ static LIST_HEAD(ftrace_module_file_list);
> * Modules must own their file_operations to keep up with
> * reference counting.
> */
> +
> +/* cannot be const */
> struct ftrace_module_file_ops {
> struct list_head list;
> struct module *mod;
> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
> index 7495ce3..d0a3cc0 100644
> --- a/virt/kvm/kvm_main.c
> +++ b/virt/kvm/kvm_main.c
> @@ -1745,6 +1745,7 @@ static int kvm_vcpu_release(struct inode *inode, struct file *filp)
> return 0;
> }
>
> +/* cannot be const */
> static struct file_operations kvm_vcpu_fops = {
> .release = kvm_vcpu_release,
> .unlocked_ioctl = kvm_vcpu_ioctl,
> @@ -2341,6 +2342,7 @@ static int kvm_vm_mmap(struct file *file, struct vm_area_struct *vma)
> return 0;
> }
>
> +/* cannot be const */
> static struct file_operations kvm_vm_fops = {
> .release = kvm_vm_release,
> .unlocked_ioctl = kvm_vm_ioctl,
> @@ -2428,6 +2430,7 @@ out:
> return r;
> }
>
> +/* cannot be const */
> static struct file_operations kvm_chardev_ops = {
> .unlocked_ioctl = kvm_dev_ioctl,
> .compat_ioctl = kvm_dev_ioctl,
>
>
next prev parent reply other threads:[~2009-12-04 23:06 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-04 22:00 [PATCH 00/31] constify various _ops structures for 2.6.32 v1 Emese Revfy
2009-12-04 22:05 ` [PATCH 01/31] Constify struct acpi_dock_ops " Emese Revfy
2009-12-04 22:08 ` [PATCH 02/31] Constify struct address_space_operations " Emese Revfy
2009-12-05 0:08 ` Matthew Wilcox
2009-12-05 0:36 ` Emese Revfy
2009-12-05 14:27 ` Matthew Wilcox
2009-12-06 0:18 ` Emese Revfy
2009-12-04 22:09 ` [PATCH 03/31] Constify struct backlight_ops " Emese Revfy
2009-12-04 22:12 ` [PATCH 04/31] Constify struct block_device_operations " Emese Revfy
2009-12-04 22:14 ` [PATCH 05/31] Constify struct dma_map_ops " Emese Revfy
2009-12-05 0:59 ` Stephen Rothwell
2009-12-05 1:20 ` Stephen Rothwell
2009-12-05 2:00 ` Emese Revfy
2009-12-05 2:10 ` Stephen Rothwell
2009-12-05 2:25 ` Emese Revfy
2009-12-05 2:27 ` Stephen Rothwell
2009-12-05 2:52 ` Emese Revfy
2009-12-05 3:21 ` Stephen Rothwell
2009-12-05 13:32 ` Emese Revfy
2009-12-04 22:16 ` [PATCH 06/31] Constify struct e1000_mac_operations " Emese Revfy
2009-12-04 22:39 ` Waskiewicz Jr, Peter P
2009-12-05 0:03 ` Emese Revfy
2009-12-05 0:03 ` Emese Revfy
2009-12-05 0:40 ` Stephen Rothwell
2009-12-05 1:18 ` Emese Revfy
2009-12-05 1:21 ` Jeff Kirsher
2009-12-06 0:37 ` [PATCH 06/31] Constify struct e1000_mac_operations for net-next-2.6 v1 Emese Revfy
2009-12-04 22:17 ` [PATCH 07/31] Constify struct e1000_nvm_operations for 2.6.32 v1 Emese Revfy
2009-12-04 22:40 ` Waskiewicz Jr, Peter P
2009-12-05 0:03 ` Emese Revfy
2009-12-05 0:03 ` Emese Revfy
2009-12-06 0:38 ` [PATCH 07/31] Constify struct e1000_nvm_operations for net-next-2.6 v1 Emese Revfy
2009-12-04 22:19 ` [PATCH 08/31] Constify struct e1000_phy_operations for 2.6.32 v1 Emese Revfy
2009-12-04 22:40 ` Waskiewicz Jr, Peter P
2009-12-05 0:03 ` Emese Revfy
2009-12-05 0:03 ` Emese Revfy
2009-12-06 0:38 ` [PATCH 08/31] Constify struct e1000_phy_operations for net-next-2.6 v1 Emese Revfy
2009-12-04 22:21 ` [PATCH 09/31] Constify struct extent_io_ops for 2.6.32 v1 Emese Revfy
2009-12-07 14:12 ` Chris Mason
2009-12-07 23:27 ` Emese Revfy
2009-12-04 22:22 ` [PATCH 10/31] Constify struct file_lock_operations " Emese Revfy
2009-12-04 22:25 ` [PATCH 11/31] Constify struct file_operations " Emese Revfy
2009-12-04 23:07 ` Emese Revfy [this message]
2009-12-05 0:02 ` Emese Revfy
2009-12-05 0:09 ` Greg KH
2009-12-05 2:50 ` Emese Revfy
2009-12-05 4:15 ` Greg KH
2009-12-06 1:47 ` Emese Revfy
2009-12-06 17:25 ` Greg KH
2009-12-07 0:45 ` Emese Revfy
2009-12-07 15:11 ` Greg KH
2009-12-07 17:35 ` Emese Revfy
2009-12-07 17:57 ` Greg KH
2009-12-05 14:16 ` Jiri Slaby
2009-12-06 2:38 ` Emese Revfy
2009-12-06 9:23 ` Jiri Slaby
2009-12-04 22:26 ` [PATCH 12/31] Constify struct hv_ops " Emese Revfy
2009-12-04 22:28 ` [PATCH 13/31] Constify struct intel_dvo_dev_ops " Emese Revfy
2009-12-04 22:29 ` [PATCH 14/31] Constify struct item_operations " Emese Revfy
2009-12-04 22:31 ` [PATCH 15/31] Constify struct iwl_ops " Emese Revfy
2009-12-04 23:05 ` Emese Revfy
2009-12-04 23:05 ` Emese Revfy
2009-12-05 0:02 ` Emese Revfy
2009-12-05 0:02 ` Emese Revfy
2009-12-04 22:32 ` [PATCH 16/31] Constify struct kgdb_arch " Emese Revfy
2009-12-04 22:33 ` [PATCH 17/31] Constify struct kgdb_io " Emese Revfy
2009-12-04 22:35 ` [PATCH 18/31] Constify struct kset_uevent_ops " Emese Revfy
2009-12-04 22:36 ` [PATCH 19/31] Constify struct lock_manager_operations " Emese Revfy
2009-12-04 22:37 ` [PATCH 20/31] Constify struct microcode_ops " Emese Revfy
2009-12-04 22:38 ` [PATCH 21/31] Constify struct mtrr_ops " Emese Revfy
2009-12-07 18:40 ` H. Peter Anvin
2009-12-04 22:39 ` [PATCH 22/31] Constify struct neigh_ops " Emese Revfy
2009-12-04 23:02 ` Emese Revfy
2009-12-04 23:19 ` David Miller
2009-12-05 0:02 ` Emese Revfy
2009-12-04 22:40 ` [PATCH 23/31] Constify struct nlmsvc_binding " Emese Revfy
2009-12-04 22:41 ` [PATCH 24/31] Constify struct pci_raw_ops " Emese Revfy
2009-12-04 22:42 ` [PATCH 25/31] Constify struct platform_hibernation_ops " Emese Revfy
2009-12-04 22:43 ` [PATCH 26/31] Constify struct platform_suspend_ops " Emese Revfy
2009-12-04 22:44 ` [PATCH 27/31] Constify struct snd_ac97_build_ops " Emese Revfy
2009-12-04 22:47 ` [PATCH 28/31] Constify struct super_operations " Emese Revfy
2009-12-06 1:23 ` Al Viro
2009-12-06 1:41 ` Emese Revfy
2009-12-04 22:49 ` [PATCH 29/31] Constify struct sysfs_ops " Emese Revfy
2009-12-04 23:00 ` Emese Revfy
2009-12-04 23:00 ` Emese Revfy
2009-12-04 23:57 ` Stephen Hemminger
2009-12-05 0:03 ` Emese Revfy
2009-12-05 0:03 ` Emese Revfy
2009-12-05 21:15 ` Jens Axboe
2009-12-06 8:58 ` Pekka Enberg
2009-12-07 9:53 ` Hans J. Koch
2009-12-07 17:46 ` Matt Domsch
2009-12-07 20:09 ` David Teigland
2009-12-04 22:50 ` [PATCH 30/31] Constify struct usb_mon_operations " Emese Revfy
2009-12-04 22:51 ` [PATCH 31/31] Constify struct wd_ops " Emese Revfy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4B199640.2010402@gmail.com \
--to=re.emese@gmail.com \
--cc=astarikovskiy@suse.de \
--cc=avi@redhat.com \
--cc=davem@davemloft.net \
--cc=fweisbec@gmail.com \
--cc=gregkh@suse.de \
--cc=lenb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=mchehab@infradead.org \
--cc=miklos@szeredi.hu \
--cc=mingo@redhat.com \
--cc=mtosatti@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.