lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sun, 5 Apr 2009 04:37:48 +0400 From: Alexander Beregalov <a.beregalov@...il.com> To: gregkh@...e.de, linux-kernel@...r.kernel.org, adobriyan@...il.com Subject: [PATCH] Staging: serqt_usb: switch to proc_fops Fix this build error: serqt_usb.c:441: error: unknown field 'read_proc' specified in initializer tty_operations::read_proc was removed in 0f043a81e (proc tty: remove struct tty_operations::read_proc) Signed-off-by: Alexander Beregalov <a.beregalov@...il.com> --- drivers/staging/serqt_usb/serqt_usb.c | 63 ++++++++++++-------------------- 1 files changed, 24 insertions(+), 39 deletions(-) diff --git a/drivers/staging/serqt_usb/serqt_usb.c b/drivers/staging/serqt_usb/serqt_usb.c index 3b73c78..62ae5f7 100644 --- a/drivers/staging/serqt_usb/serqt_usb.c +++ b/drivers/staging/serqt_usb/serqt_usb.c @@ -14,6 +14,7 @@ #include <linux/types.h> #include <linux/version.h> #include <linux/uaccess.h> +#include <linux/seq_file.h> /* Use our own dbg macro */ /* #define DEBUG_ON */ @@ -288,8 +289,8 @@ static void serial_throttle(struct tty_struct *tty); static void serial_unthrottle(struct tty_struct *tty); static int serial_break(struct tty_struct *tty, int break_state); static int serial_chars_in_buffer(struct tty_struct *tty); -static int serial_read_proc(char *page, char **start, off_t off, int count, - int *eof, void *data); +static int serial_proc_show(struct seq_file *m, void *v); +static int serial_proc_open(struct inode *inode, struct file *file); static int qt_open(struct usb_serial_port *port, struct file *filp); static int BoxSetPrebufferLevel(struct usb_serial *serial); @@ -427,6 +428,14 @@ static struct usb_driver serqt_usb_driver = { static struct ktermios *serial_termios[SERIAL_TTY_MINORS]; static struct ktermios *serial_termios_locked[SERIAL_TTY_MINORS]; +static const struct file_operations serial_proc_fops = { + .owner = THIS_MODULE, + .open = serial_proc_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + static const struct tty_operations serial_ops = { .open = serial_open, .close = serial_close, @@ -438,7 +447,7 @@ static const struct tty_operations serial_ops = { .unthrottle = serial_unthrottle, .break_ctl = serial_break, .chars_in_buffer = serial_chars_in_buffer, - .read_proc = serial_read_proc, + .proc_fops = &serial_proc_fops, .tiocmset = serial_tiocmset, .tiocmget = serial_tiocmget, }; @@ -2417,50 +2426,26 @@ exit: return 0; } -static int serial_read_proc(char *page, char **start, off_t off, int count, - int *eof, void *data) +static int serial_proc_show(struct seq_file *m, void *v) { struct usb_serial *serial; - int length = 0; int i; - off_t begin = 0; - mydbg("%s\n", __func__); - length += sprintf(page, "usbserinfo:1.0 driver:%s\n", DRIVER_VERSION); - for (i = 0; i < SERIAL_TTY_MINORS && length < PAGE_SIZE; ++i) { + seq_printf(m, "usbserinfo:1.0 driver:%s\n", DRIVER_VERSION); + for (i = 0; i < SERIAL_TTY_MINORS; i++) { serial = get_serial_by_minor(i); if (serial == NULL) continue; - - length += sprintf(page + length, "%d:\n", i); - length += - sprintf(page + length, " vendor:%04x product:%04x\n", - serial->vendor, serial->product); - length += - sprintf(page + length, " num_ports:%d\n", - serial->num_ports); - length += - sprintf(page + length, " port:%d\n", i - serial->minor + 1); - -/* - usb_make_path(serial->dev, tmp, sizeof(tmp)); - length += sprintf (page+length, " path:%s", tmp); -*/ - - length += sprintf(page + length, "\n"); - if ((length + begin) > (off + count)) - goto done; - if ((length + begin) < off) { - begin += length; - length = 0; - } + seq_printf(m, "%d:\n vendor:%04x product:%04x\n num_ports:%d\n" + " port:%d\n", i, serial->vendor, serial->product, + serial->num_ports, i - serial->minor + 1); } - *eof = 1; -done: - if (off >= (length + begin)) - return 0; - *start = page + (off - begin); - return ((count < begin + length - off) ? count : begin + length - off); + return 0; +} + +static int serial_proc_open(struct inode *inode, struct file *file) +{ + return single_open(file, serial_proc_show, NULL); } static int ioctl_serial_usb(struct inode *innod, struct file *filp, unsigned int cmd, -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists