You need my patch if and only if you use one of the drivers touched by
the patch. ata_sg_is_last() was a driver helper function, so my fix
never really touched core code.
I never had to apply the changes you included, to fix problems here.
And looking at those changes...
I wonder if libata should be doing
blk_queue_max_phys_segments(q, q->max_phys_segments - 1)
to account for the pad entry that libata owns.