diff options
Diffstat (limited to 'drivers/platform/surface/aggregator')
| -rw-r--r-- | drivers/platform/surface/aggregator/controller.c | 4 | ||||
| -rw-r--r-- | drivers/platform/surface/aggregator/ssh_request_layer.c | 14 | 
2 files changed, 17 insertions, 1 deletions
| diff --git a/drivers/platform/surface/aggregator/controller.c b/drivers/platform/surface/aggregator/controller.c index 43e765199137..c6537a1b3a2e 100644 --- a/drivers/platform/surface/aggregator/controller.c +++ b/drivers/platform/surface/aggregator/controller.c @@ -1700,8 +1700,10 @@ int ssam_request_sync(struct ssam_controller *ctrl,  		return status;  	status = ssam_request_sync_init(rqst, spec->flags); -	if (status) +	if (status) { +		ssam_request_sync_free(rqst);  		return status; +	}  	ssam_request_sync_set_resp(rqst, rsp); diff --git a/drivers/platform/surface/aggregator/ssh_request_layer.c b/drivers/platform/surface/aggregator/ssh_request_layer.c index f5565570f16c..69132976d297 100644 --- a/drivers/platform/surface/aggregator/ssh_request_layer.c +++ b/drivers/platform/surface/aggregator/ssh_request_layer.c @@ -916,6 +916,20 @@ static void ssh_rtl_rx_command(struct ssh_ptl *p, const struct ssam_span *data)  	if (sshp_parse_command(dev, data, &command, &command_data))  		return; +	/* +	 * Check if the message was intended for us. If not, drop it. +	 * +	 * Note: We will need to change this to handle debug messages. On newer +	 * generation devices, these seem to be sent to tid_out=0x03. We as +	 * host can still receive them as they can be forwarded via an override +	 * option on SAM, but doing so does not change tid_out=0x00. +	 */ +	if (command->tid_out != 0x00) { +		rtl_warn(rtl, "rtl: dropping message not intended for us (tid = %#04x)\n", +			 command->tid_out); +		return; +	} +  	if (ssh_rqid_is_event(get_unaligned_le16(&command->rqid)))  		ssh_rtl_rx_event(rtl, command, &command_data);  	else |