diff options
| -rw-r--r-- | block/ll_rw_blk.c | 2 | ||||
| -rw-r--r-- | drivers/scsi/scsi_lib.c | 2 | ||||
| -rw-r--r-- | include/linux/scatterlist.h | 22 | ||||
| -rw-r--r-- | net/core/skbuff.c | 2 | ||||
| -rw-r--r-- | net/ipv4/tcp_ipv4.c | 2 | ||||
| -rw-r--r-- | net/ipv6/tcp_ipv6.c | 2 | ||||
| -rw-r--r-- | net/rxrpc/rxkad.c | 2 | ||||
| -rw-r--r-- | net/sunrpc/auth_gss/gss_krb5_crypto.c | 6 |
8 files changed, 21 insertions, 19 deletions
diff --git a/block/ll_rw_blk.c b/block/ll_rw_blk.c index 56f2646612e6..54fd38589674 100644 --- a/block/ll_rw_blk.c +++ b/block/ll_rw_blk.c | |||
| @@ -1369,7 +1369,7 @@ new_segment: | |||
| 1369 | } /* segments in rq */ | 1369 | } /* segments in rq */ |
| 1370 | 1370 | ||
| 1371 | if (sg) | 1371 | if (sg) |
| 1372 | __sg_mark_end(sg); | 1372 | sg_mark_end(sg); |
| 1373 | 1373 | ||
| 1374 | return nsegs; | 1374 | return nsegs; |
| 1375 | } | 1375 | } |
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 61fdaf02f251..88de771d3569 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
| @@ -785,7 +785,7 @@ struct scatterlist *scsi_alloc_sgtable(struct scsi_cmnd *cmd, gfp_t gfp_mask) | |||
| 785 | * end-of-list | 785 | * end-of-list |
| 786 | */ | 786 | */ |
| 787 | if (!left) | 787 | if (!left) |
| 788 | sg_mark_end(sgl, this); | 788 | sg_mark_end(&sgl[this - 1]); |
| 789 | 789 | ||
| 790 | /* | 790 | /* |
| 791 | * don't allow subsequent mempool allocs to sleep, it would | 791 | * don't allow subsequent mempool allocs to sleep, it would |
diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h index d5e1876daf3f..259735044148 100644 --- a/include/linux/scatterlist.h +++ b/include/linux/scatterlist.h | |||
| @@ -188,21 +188,23 @@ static inline void sg_chain(struct scatterlist *prv, unsigned int prv_nents, | |||
| 188 | 188 | ||
| 189 | /** | 189 | /** |
| 190 | * sg_mark_end - Mark the end of the scatterlist | 190 | * sg_mark_end - Mark the end of the scatterlist |
| 191 | * @sgl: Scatterlist | 191 | * @sg: SG entryScatterlist |
| 192 | * @nents: Number of entries in sgl | ||
| 193 | * | 192 | * |
| 194 | * Description: | 193 | * Description: |
| 195 | * Marks the last entry as the termination point for sg_next() | 194 | * Marks the passed in sg entry as the termination point for the sg |
| 195 | * table. A call to sg_next() on this entry will return NULL. | ||
| 196 | * | 196 | * |
| 197 | **/ | 197 | **/ |
| 198 | static inline void sg_mark_end(struct scatterlist *sgl, unsigned int nents) | 198 | static inline void sg_mark_end(struct scatterlist *sg) |
| 199 | { | ||
| 200 | sgl[nents - 1].page_link = 0x02; | ||
| 201 | } | ||
| 202 | |||
| 203 | static inline void __sg_mark_end(struct scatterlist *sg) | ||
| 204 | { | 199 | { |
| 200 | #ifdef CONFIG_DEBUG_SG | ||
| 201 | BUG_ON(sg->sg_magic != SG_MAGIC); | ||
| 202 | #endif | ||
| 203 | /* | ||
| 204 | * Set termination bit, clear potential chain bit | ||
| 205 | */ | ||
| 205 | sg->page_link |= 0x02; | 206 | sg->page_link |= 0x02; |
| 207 | sg->page_link &= ~0x01; | ||
| 206 | } | 208 | } |
| 207 | 209 | ||
| 208 | /** | 210 | /** |
| @@ -218,7 +220,6 @@ static inline void __sg_mark_end(struct scatterlist *sg) | |||
| 218 | static inline void sg_init_table(struct scatterlist *sgl, unsigned int nents) | 220 | static inline void sg_init_table(struct scatterlist *sgl, unsigned int nents) |
| 219 | { | 221 | { |
| 220 | memset(sgl, 0, sizeof(*sgl) * nents); | 222 | memset(sgl, 0, sizeof(*sgl) * nents); |
| 221 | sg_mark_end(sgl, nents); | ||
| 222 | #ifdef CONFIG_DEBUG_SG | 223 | #ifdef CONFIG_DEBUG_SG |
| 223 | { | 224 | { |
| 224 | unsigned int i; | 225 | unsigned int i; |
| @@ -226,6 +227,7 @@ static inline void sg_init_table(struct scatterlist *sgl, unsigned int nents) | |||
| 226 | sgl[i].sg_magic = SG_MAGIC; | 227 | sgl[i].sg_magic = SG_MAGIC; |
| 227 | } | 228 | } |
| 228 | #endif | 229 | #endif |
| 230 | sg_mark_end(&sgl[nents - 1]); | ||
| 229 | } | 231 | } |
| 230 | 232 | ||
| 231 | /** | 233 | /** |
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 64b50ff7a413..32d5826b7177 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
| @@ -2095,7 +2095,7 @@ int skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int le | |||
| 2095 | { | 2095 | { |
| 2096 | int nsg = __skb_to_sgvec(skb, sg, offset, len); | 2096 | int nsg = __skb_to_sgvec(skb, sg, offset, len); |
| 2097 | 2097 | ||
| 2098 | __sg_mark_end(&sg[nsg - 1]); | 2098 | sg_mark_end(&sg[nsg - 1]); |
| 2099 | 2099 | ||
| 2100 | return nsg; | 2100 | return nsg; |
| 2101 | } | 2101 | } |
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index eec02b29ffcf..d438dfb0c8f3 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
| @@ -1083,7 +1083,7 @@ static int tcp_v4_do_calc_md5_hash(char *md5_hash, struct tcp_md5sig_key *key, | |||
| 1083 | sg_set_buf(&sg[block++], key->key, key->keylen); | 1083 | sg_set_buf(&sg[block++], key->key, key->keylen); |
| 1084 | nbytes += key->keylen; | 1084 | nbytes += key->keylen; |
| 1085 | 1085 | ||
| 1086 | __sg_mark_end(&sg[block - 1]); | 1086 | sg_mark_end(&sg[block - 1]); |
| 1087 | 1087 | ||
| 1088 | /* Now store the Hash into the packet */ | 1088 | /* Now store the Hash into the packet */ |
| 1089 | err = crypto_hash_init(desc); | 1089 | err = crypto_hash_init(desc); |
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 4b9032880959..06be2a1f2730 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c | |||
| @@ -781,7 +781,7 @@ static int tcp_v6_do_calc_md5_hash(char *md5_hash, struct tcp_md5sig_key *key, | |||
| 781 | sg_set_buf(&sg[block++], key->key, key->keylen); | 781 | sg_set_buf(&sg[block++], key->key, key->keylen); |
| 782 | nbytes += key->keylen; | 782 | nbytes += key->keylen; |
| 783 | 783 | ||
| 784 | __sg_mark_end(&sg[block - 1]); | 784 | sg_mark_end(&sg[block - 1]); |
| 785 | 785 | ||
| 786 | /* Now store the hash into the packet */ | 786 | /* Now store the hash into the packet */ |
| 787 | err = crypto_hash_init(desc); | 787 | err = crypto_hash_init(desc); |
diff --git a/net/rxrpc/rxkad.c b/net/rxrpc/rxkad.c index c387cf68a08c..e09a95aa68ff 100644 --- a/net/rxrpc/rxkad.c +++ b/net/rxrpc/rxkad.c | |||
| @@ -702,7 +702,7 @@ static void rxkad_sg_set_buf2(struct scatterlist sg[2], | |||
| 702 | nsg++; | 702 | nsg++; |
| 703 | } | 703 | } |
| 704 | 704 | ||
| 705 | __sg_mark_end(&sg[nsg - 1]); | 705 | sg_mark_end(&sg[nsg - 1]); |
| 706 | 706 | ||
| 707 | ASSERTCMP(sg[0].length + sg[1].length, ==, buflen); | 707 | ASSERTCMP(sg[0].length + sg[1].length, ==, buflen); |
| 708 | } | 708 | } |
diff --git a/net/sunrpc/auth_gss/gss_krb5_crypto.c b/net/sunrpc/auth_gss/gss_krb5_crypto.c index ab7cbd6575c4..0dd792338fa9 100644 --- a/net/sunrpc/auth_gss/gss_krb5_crypto.c +++ b/net/sunrpc/auth_gss/gss_krb5_crypto.c | |||
| @@ -211,8 +211,8 @@ encryptor(struct scatterlist *sg, void *data) | |||
| 211 | if (thislen == 0) | 211 | if (thislen == 0) |
| 212 | return 0; | 212 | return 0; |
| 213 | 213 | ||
| 214 | __sg_mark_end(&desc->infrags[desc->fragno - 1]); | 214 | sg_mark_end(&desc->infrags[desc->fragno - 1]); |
| 215 | __sg_mark_end(&desc->outfrags[desc->fragno - 1]); | 215 | sg_mark_end(&desc->outfrags[desc->fragno - 1]); |
| 216 | 216 | ||
| 217 | ret = crypto_blkcipher_encrypt_iv(&desc->desc, desc->outfrags, | 217 | ret = crypto_blkcipher_encrypt_iv(&desc->desc, desc->outfrags, |
| 218 | desc->infrags, thislen); | 218 | desc->infrags, thislen); |
| @@ -293,7 +293,7 @@ decryptor(struct scatterlist *sg, void *data) | |||
| 293 | if (thislen == 0) | 293 | if (thislen == 0) |
| 294 | return 0; | 294 | return 0; |
| 295 | 295 | ||
| 296 | __sg_mark_end(&desc->frags[desc->fragno - 1]); | 296 | sg_mark_end(&desc->frags[desc->fragno - 1]); |
| 297 | 297 | ||
| 298 | ret = crypto_blkcipher_decrypt_iv(&desc->desc, desc->frags, | 298 | ret = crypto_blkcipher_decrypt_iv(&desc->desc, desc->frags, |
| 299 | desc->frags, thislen); | 299 | desc->frags, thislen); |
