hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/kernel/relay.c
....@@ -163,13 +163,13 @@
163163 {
164164 struct rchan_buf *buf;
165165
166
- if (chan->n_subbufs > KMALLOC_MAX_SIZE / sizeof(size_t *))
166
+ if (chan->n_subbufs > KMALLOC_MAX_SIZE / sizeof(size_t))
167167 return NULL;
168168
169169 buf = kzalloc(sizeof(struct rchan_buf), GFP_KERNEL);
170170 if (!buf)
171171 return NULL;
172
- buf->padding = kmalloc_array(chan->n_subbufs, sizeof(size_t *),
172
+ buf->padding = kmalloc_array(chan->n_subbufs, sizeof(size_t),
173173 GFP_KERNEL);
174174 if (!buf->padding)
175175 goto free_buf;
....@@ -1077,7 +1077,8 @@
10771077 size_t subbuf_size = buf->chan->subbuf_size;
10781078 size_t n_subbufs = buf->chan->n_subbufs;
10791079 size_t consumed = buf->subbufs_consumed % n_subbufs;
1080
- size_t read_pos = consumed * subbuf_size + buf->bytes_consumed;
1080
+ size_t read_pos = (consumed * subbuf_size + buf->bytes_consumed)
1081
+ % (n_subbufs * subbuf_size);
10811082
10821083 read_subbuf = read_pos / subbuf_size;
10831084 padding = buf->padding[read_subbuf];