Barclays to buy back $17.6b of securities sold in error