diff options
Diffstat (limited to 'kernel/relay.c')
-rw-r--r-- | kernel/relay.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/kernel/relay.c b/kernel/relay.c index 8d13a7855c08..09ac2008f77b 100644 --- a/kernel/relay.c +++ b/kernel/relay.c | |||
@@ -400,7 +400,7 @@ void relay_reset(struct rchan *chan) | |||
400 | } | 400 | } |
401 | 401 | ||
402 | mutex_lock(&relay_channels_mutex); | 402 | mutex_lock(&relay_channels_mutex); |
403 | for_each_online_cpu(i) | 403 | for_each_possible_cpu(i) |
404 | if (chan->buf[i]) | 404 | if (chan->buf[i]) |
405 | __relay_reset(chan->buf[i], 0); | 405 | __relay_reset(chan->buf[i], 0); |
406 | mutex_unlock(&relay_channels_mutex); | 406 | mutex_unlock(&relay_channels_mutex); |
@@ -611,10 +611,9 @@ struct rchan *relay_open(const char *base_filename, | |||
611 | return chan; | 611 | return chan; |
612 | 612 | ||
613 | free_bufs: | 613 | free_bufs: |
614 | for_each_online_cpu(i) { | 614 | for_each_possible_cpu(i) { |
615 | if (!chan->buf[i]) | 615 | if (chan->buf[i]) |
616 | break; | 616 | relay_close_buf(chan->buf[i]); |
617 | relay_close_buf(chan->buf[i]); | ||
618 | } | 617 | } |
619 | 618 | ||
620 | kref_put(&chan->kref, relay_destroy_channel); | 619 | kref_put(&chan->kref, relay_destroy_channel); |
@@ -1318,12 +1317,9 @@ static ssize_t relay_file_splice_read(struct file *in, | |||
1318 | if (ret < 0) | 1317 | if (ret < 0) |
1319 | break; | 1318 | break; |
1320 | else if (!ret) { | 1319 | else if (!ret) { |
1321 | if (spliced) | 1320 | if (flags & SPLICE_F_NONBLOCK) |
1322 | break; | ||
1323 | if (flags & SPLICE_F_NONBLOCK) { | ||
1324 | ret = -EAGAIN; | 1321 | ret = -EAGAIN; |
1325 | break; | 1322 | break; |
1326 | } | ||
1327 | } | 1323 | } |
1328 | 1324 | ||
1329 | *ppos += ret; | 1325 | *ppos += ret; |