Return number of object freed in the generic shrinker

According to the comments in the kernel's shrinker.h file, the
scan_objects callback should return the number of objects actually
freed.  Previously, the shrinker returned the number of objects
which were _attempted_ to be freed.  It also didn't cap the freeing
at nr_to_scan.  If the value returned is too high, callers may retry
shrinking indefinitely.