Re: [PATCH 1/5] um: port: Move an assignment for the variable "fd" in port_wait()
On Wed, Jan 18, 2017 at 10:56:17PM +0100, SF Markus Elfring wrote: > diff --git a/arch/um/drivers/port_kern.c b/arch/um/drivers/port_kern.c > index 40ca5cc275e9..b2bbda21c5f3 100644 > --- a/arch/um/drivers/port_kern.c > +++ b/arch/um/drivers/port_kern.c > @@ -230,10 +230,10 @@ int port_wait(void *data) > > atomic_inc(>wait_count); > while (1) { > - fd = -ERESTARTSYS; > - if (wait_for_completion_interruptible(>done)) > + if (wait_for_completion_interruptible(>done)) { > + fd = -ERESTARTSYS; > goto out; > - > + } > spin_lock(>lock); > > conn = list_entry(port->connections.next, struct connection, > -- > 2.11.0 > The current code is pretty standard kernel coding style. The inline fd = -ERESTARTSYS; is likely free, or close to it, and I believe that having anything besides a goto inside the if could make it significantly more expensive. Jeff -- Jeff Dike AddToIt 978-254-0789 (o) 978-394-8986 (c)
Re: [PATCH 1/5] um: port: Move an assignment for the variable "fd" in port_wait()
On Wed, Jan 18, 2017 at 10:56:17PM +0100, SF Markus Elfring wrote: > diff --git a/arch/um/drivers/port_kern.c b/arch/um/drivers/port_kern.c > index 40ca5cc275e9..b2bbda21c5f3 100644 > --- a/arch/um/drivers/port_kern.c > +++ b/arch/um/drivers/port_kern.c > @@ -230,10 +230,10 @@ int port_wait(void *data) > > atomic_inc(>wait_count); > while (1) { > - fd = -ERESTARTSYS; > - if (wait_for_completion_interruptible(>done)) > + if (wait_for_completion_interruptible(>done)) { > + fd = -ERESTARTSYS; > goto out; > - > + } > spin_lock(>lock); > > conn = list_entry(port->connections.next, struct connection, > -- > 2.11.0 > The current code is pretty standard kernel coding style. The inline fd = -ERESTARTSYS; is likely free, or close to it, and I believe that having anything besides a goto inside the if could make it significantly more expensive. Jeff -- Jeff Dike AddToIt 978-254-0789 (o) 978-394-8986 (c)
[PATCH 1/5] um: port: Move an assignment for the variable "fd" in port_wait()
From: Markus ElfringDate: Wed, 18 Jan 2017 21:40:29 +0100 A local variable was set to an error code in one case before a concrete error situation was detected. Thus move the corresponding assignment into an if branch to indicate a software failure there. This issue was detected by using the Coccinelle software. Signed-off-by: Markus Elfring --- arch/um/drivers/port_kern.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/um/drivers/port_kern.c b/arch/um/drivers/port_kern.c index 40ca5cc275e9..b2bbda21c5f3 100644 --- a/arch/um/drivers/port_kern.c +++ b/arch/um/drivers/port_kern.c @@ -230,10 +230,10 @@ int port_wait(void *data) atomic_inc(>wait_count); while (1) { - fd = -ERESTARTSYS; - if (wait_for_completion_interruptible(>done)) + if (wait_for_completion_interruptible(>done)) { + fd = -ERESTARTSYS; goto out; - + } spin_lock(>lock); conn = list_entry(port->connections.next, struct connection, -- 2.11.0
[PATCH 1/5] um: port: Move an assignment for the variable "fd" in port_wait()
From: Markus Elfring Date: Wed, 18 Jan 2017 21:40:29 +0100 A local variable was set to an error code in one case before a concrete error situation was detected. Thus move the corresponding assignment into an if branch to indicate a software failure there. This issue was detected by using the Coccinelle software. Signed-off-by: Markus Elfring --- arch/um/drivers/port_kern.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/um/drivers/port_kern.c b/arch/um/drivers/port_kern.c index 40ca5cc275e9..b2bbda21c5f3 100644 --- a/arch/um/drivers/port_kern.c +++ b/arch/um/drivers/port_kern.c @@ -230,10 +230,10 @@ int port_wait(void *data) atomic_inc(>wait_count); while (1) { - fd = -ERESTARTSYS; - if (wait_for_completion_interruptible(>done)) + if (wait_for_completion_interruptible(>done)) { + fd = -ERESTARTSYS; goto out; - + } spin_lock(>lock); conn = list_entry(port->connections.next, struct connection, -- 2.11.0