Skip to content

Commit

Permalink
intel_th: sth: Sanitize packet callback's return values
Browse files Browse the repository at this point in the history
According to the stm class interface, the packet callback should return
an error if it is asked to generate packets that it doesn't support.
When it succeeds, it should return number of bytes consumed from its
payload. Currently, for FLAG packet it mistakenly returns 1.

This patch addresses these issues.

Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Alexander Shishkin authored and Greg Kroah-Hartman committed Feb 20, 2016
1 parent 2bed074 commit 9700750
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions drivers/hwtracing/intel_th/sth.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,10 +94,13 @@ static ssize_t sth_stm_packet(struct stm_data *stm_data, unsigned int master,
case STP_PACKET_TRIG:
if (flags & STP_PACKET_TIMESTAMPED)
reg += 4;
iowrite8(*payload, sth->base + reg);
writeb_relaxed(*payload, sth->base + reg);
break;

case STP_PACKET_MERR:
if (size > 4)
size = 4;

sth_iowrite(&out->MERR, payload, size);
break;

Expand All @@ -107,8 +110,8 @@ static ssize_t sth_stm_packet(struct stm_data *stm_data, unsigned int master,
else
outp = (u64 __iomem *)&out->FLAG;

size = 1;
sth_iowrite(outp, payload, size);
size = 0;
writeb_relaxed(0, outp);
break;

case STP_PACKET_USER:
Expand All @@ -129,6 +132,8 @@ static ssize_t sth_stm_packet(struct stm_data *stm_data, unsigned int master,

sth_iowrite(outp, payload, size);
break;
default:
return -ENOTSUPP;
}

return size;
Expand Down

0 comments on commit 9700750

Please sign in to comment.