Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a39284ae authored by Dan Carpenter's avatar Dan Carpenter Committed by Greg Kroah-Hartman
Browse files

misc: mic: SCIF Fix scif_get_new_port() error handling



There are only 2 callers of scif_get_new_port() and both appear to get
the error handling wrong.  Both treat zero returns as error, but it
actually returns negative error codes and >= 0 on success.

Fixes: e9089f43 ("misc: mic: SCIF open close bind and listen APIs")
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 01711142
Loading
Loading
Loading
Loading
+9 −11
Original line number Diff line number Diff line
@@ -371,11 +371,10 @@ int scif_bind(scif_epd_t epd, u16 pn)
			goto scif_bind_exit;
		}
	} else {
		pn = scif_get_new_port();
		if (!pn) {
			ret = -ENOSPC;
		ret = scif_get_new_port();
		if (ret < 0)
			goto scif_bind_exit;
		}
		pn = ret;
	}

	ep->state = SCIFEP_BOUND;
@@ -649,13 +648,12 @@ int __scif_connect(scif_epd_t epd, struct scif_port_id *dst, bool non_block)
			err = -EISCONN;
		break;
	case SCIFEP_UNBOUND:
		ep->port.port = scif_get_new_port();
		if (!ep->port.port) {
			err = -ENOSPC;
		} else {
		err = scif_get_new_port();
		if (err < 0)
			break;
		ep->port.port = err;
		ep->port.node = scif_info.nodeid;
		ep->conn_async_state = ASYNC_CONN_IDLE;
		}
		/* Fall through */
	case SCIFEP_BOUND:
		/*