Commit b417343c authored by Michał Mirosław's avatar Michał Mirosław Committed by Felipe Balbi

usb: gadget: u_serial: make OBEX port not a console

Prevent OBEX serial port from ever becoming a console. Console messages
will definitely break the protocol, and since you have to instantiate
the port making it explicitly for OBEX, there is no point in allowing
console to break it by mistake.
Signed-off-by: default avatarMichał Mirosław <mirq-linux@rere.qmqm.pl>
Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
parent fe1ea63a
...@@ -432,7 +432,7 @@ static struct usb_function_instance *obex_alloc_inst(void) ...@@ -432,7 +432,7 @@ static struct usb_function_instance *obex_alloc_inst(void)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
opts->func_inst.free_func_inst = obex_free_inst; opts->func_inst.free_func_inst = obex_free_inst;
ret = gserial_alloc_line(&opts->port_num); ret = gserial_alloc_line_no_console(&opts->port_num);
if (ret) { if (ret) {
kfree(opts); kfree(opts);
return ERR_PTR(ret); return ERR_PTR(ret);
......
...@@ -1180,7 +1180,7 @@ void gserial_free_line(unsigned char port_num) ...@@ -1180,7 +1180,7 @@ void gserial_free_line(unsigned char port_num)
} }
EXPORT_SYMBOL_GPL(gserial_free_line); EXPORT_SYMBOL_GPL(gserial_free_line);
int gserial_alloc_line(unsigned char *line_num) int gserial_alloc_line_no_console(unsigned char *line_num)
{ {
struct usb_cdc_line_coding coding; struct usb_cdc_line_coding coding;
struct gs_port *port; struct gs_port *port;
...@@ -1221,12 +1221,20 @@ int gserial_alloc_line(unsigned char *line_num) ...@@ -1221,12 +1221,20 @@ int gserial_alloc_line(unsigned char *line_num)
goto err; goto err;
} }
*line_num = port_num; *line_num = port_num;
if (!port_num)
gs_console_init(port);
err: err:
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(gserial_alloc_line_no_console);
int gserial_alloc_line(unsigned char *line_num)
{
int ret = gserial_alloc_line_no_console(line_num);
if (!ret && !*line_num)
gs_console_init(ports[*line_num].port);
return ret;
}
EXPORT_SYMBOL_GPL(gserial_alloc_line); EXPORT_SYMBOL_GPL(gserial_alloc_line);
/** /**
......
...@@ -54,6 +54,7 @@ struct usb_request *gs_alloc_req(struct usb_ep *ep, unsigned len, gfp_t flags); ...@@ -54,6 +54,7 @@ struct usb_request *gs_alloc_req(struct usb_ep *ep, unsigned len, gfp_t flags);
void gs_free_req(struct usb_ep *, struct usb_request *req); void gs_free_req(struct usb_ep *, struct usb_request *req);
/* management of individual TTY ports */ /* management of individual TTY ports */
int gserial_alloc_line_no_console(unsigned char *port_line);
int gserial_alloc_line(unsigned char *port_line); int gserial_alloc_line(unsigned char *port_line);
void gserial_free_line(unsigned char port_line); void gserial_free_line(unsigned char port_line);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment