scatterlist: allow limited chaining without ARCH_HAS_SG_CHAIN
There are a couple of uses of struct scatterlist that never go to the dma_map_sg() helper and thus don't care about ARCH_HAS_SG_CHAIN which indicates that we can map chained S/G list. The most important one is the crypto code, which currently has to open code a few helpers to always allow chaining. This patch removes a few #ifdef ARCH_HAS_SG_CHAIN statements so that we can switch the crypto code to these common helpers. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
		
							parent
							
								
									0048b4837a
								
							
						
					
					
						commit
						10c95ed9aa
					
				| @ -161,10 +161,6 @@ static inline void sg_set_buf(struct scatterlist *sg, const void *buf, | ||||
| static inline void sg_chain(struct scatterlist *prv, unsigned int prv_nents, | ||||
| 			    struct scatterlist *sgl) | ||||
| { | ||||
| #ifndef CONFIG_ARCH_HAS_SG_CHAIN | ||||
| 	BUG(); | ||||
| #endif | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * offset and length are unused for chain entry.  Clear them. | ||||
| 	 */ | ||||
|  | ||||
| @ -105,16 +105,12 @@ EXPORT_SYMBOL(sg_nents_for_len); | ||||
|  **/ | ||||
| struct scatterlist *sg_last(struct scatterlist *sgl, unsigned int nents) | ||||
| { | ||||
| #ifndef CONFIG_ARCH_HAS_SG_CHAIN | ||||
| 	struct scatterlist *ret = &sgl[nents - 1]; | ||||
| #else | ||||
| 	struct scatterlist *sg, *ret = NULL; | ||||
| 	unsigned int i; | ||||
| 
 | ||||
| 	for_each_sg(sgl, sg, nents, i) | ||||
| 		ret = sg; | ||||
| 
 | ||||
| #endif | ||||
| #ifdef CONFIG_DEBUG_SG | ||||
| 	BUG_ON(sgl[0].sg_magic != SG_MAGIC); | ||||
| 	BUG_ON(!sg_is_last(ret)); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user