Re: [0/8] target-iSCSI: Adjustments for several function implementations
>> Can a passed null pointer really work in this function? >> >> https://elixir.bootlin.com/linux/v4.16-rc2/source/include/crypto/hash.h#L684 >> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/crypto/hash.h?id=0f9da844d87796ac31b04e81ee95e155e9043132#n751 >> >> static inline struct crypto_tfm *crypto_shash_tfm(struct crypto_shash *tfm) >> { >> return >base; >> } > > Yes. It's not a dereference, Do any processors treat the zero address still special there? > it's just doing pointer math to get the address. Can eventually happen anything unexpected? Can it be nicer to avoid such a software behaviour concern generally just by adjusting a few jump labels (as I proposed it)? Regards, Markus
Re: [0/8] target-iSCSI: Adjustments for several function implementations
On Fri, Feb 23, 2018 at 10:06:16AM +0100, SF Markus Elfring wrote: > > Calling crypto_free_shash(NULL) is actually fine. > > Really? > > > > It doesn't dereference the parameter, it just does pointer math on it in > > crypto_shash_tfm() and returns if it's NULL in crypto_destroy_tfm(). > > Can a passed null pointer really work in this function? > > https://elixir.bootlin.com/linux/v4.16-rc2/source/include/crypto/hash.h#L684 > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/crypto/hash.h?id=0f9da844d87796ac31b04e81ee95e155e9043132#n751 > > static inline struct crypto_tfm *crypto_shash_tfm(struct crypto_shash *tfm) > { > return >base; > } Yes. It's not a dereference, it's just doing pointer math to get the address. regards, dan carpenter
Re: [0/8] target-iSCSI: Adjustments for several function implementations
> Calling crypto_free_shash(NULL) is actually fine. Really? > It doesn't dereference the parameter, it just does pointer math on it in > crypto_shash_tfm() and returns if it's NULL in crypto_destroy_tfm(). Can a passed null pointer really work in this function? https://elixir.bootlin.com/linux/v4.16-rc2/source/include/crypto/hash.h#L684 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/crypto/hash.h?id=0f9da844d87796ac31b04e81ee95e155e9043132#n751 static inline struct crypto_tfm *crypto_shash_tfm(struct crypto_shash *tfm) { return >base; } Regards, Markus
Re: [0/8] target-iSCSI: Adjustments for several function implementations
> You're 1/8 patch had an actual bug fix hidden amongst the style churn. It showed the general possibility to adjust the source code structure for the function “chap_server_compute_md5” also because of the usage of the single jump label “out” before. > I don't see any such fixes in the other patches. This view is appropriate. Further update steps show different transformation possibilities. > My opinion from https://www.spinics.net/lists/target-devel/msg16342.html > hasn't changed. FWIW, I'd prefer to see LIO adopt a policy similar to: > https://btrfs.wiki.kernel.org/index.php/Developer%27s_FAQ#How_not_to_start It seems that you express a few aspects for general change resistance. Will the circumstances evolve for similar software improvements? Regards, Markus